点击(此处)折叠或打开
-
-
1. 引入依赖,版本 3.0.0 只引入一个即可
-
-
<dependency>
-
<groupId>io.springfox</groupId>
-
<artifactId>springfox-boot-starter</artifactId>
-
<version>3.0.0</version>
-
</dependency>
-
2. 配置类 SwaggerConfig
-
-
package org.fh.config;
-
-
import java.util.ArrayList;
-
import java.util.Collection;
-
import java.util.List;
-
-
import org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties;
-
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties;
-
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementPortType;
-
import org.springframework.boot.actuate.endpoint.ExposableEndpoint;
-
import org.springframework.boot.actuate.endpoint.web.EndpointLinksResolver;
-
import org.springframework.boot.actuate.endpoint.web.EndpointMapping;
-
import org.springframework.boot.actuate.endpoint.web.EndpointMediaTypes;
-
import org.springframework.boot.actuate.endpoint.web.ExposableWebEndpoint;
-
import org.springframework.boot.actuate.endpoint.web.WebEndpointsSupplier;
-
import org.springframework.boot.actuate.endpoint.web.annotation.ControllerEndpointsSupplier;
-
import org.springframework.boot.actuate.endpoint.web.annotation.ServletEndpointsSupplier;
-
import org.springframework.boot.actuate.endpoint.web.servlet.WebMvcEndpointHandlerMapping;
-
import org.springframework.context.annotation.Bean;
-
import org.springframework.context.annotation.Configuration;
-
import org.springframework.core.env.Environment;
-
import org.springframework.util.StringUtils;
-
-
import springfox.documentation.builders.ApiInfoBuilder;
-
import springfox.documentation.builders.PathSelectors;
-
import springfox.documentation.builders.RequestHandlerSelectors;
-
import springfox.documentation.oas.annotations.EnableOpenApi;
-
import springfox.documentation.service.ApiInfo;
-
import springfox.documentation.spi.DocumentationType;
-
import springfox.documentation.spring.web.plugins.Docket;
-
-
/**
-
* 说明:Swagger 接口API生成
-
* 作者:FH Admin Q313596790
-
* from:fhadmin.cn
-
*/
-
@Configuration
-
@EnableOpenApi
-
public class SwaggerConfig {
-
-
@Bean
-
public Docket createRestApi() {
-
return new Docket(DocumentationType.OAS_30)
-
.apiInfo(apiInfo())
-
.select()
-
.apis(RequestHandlerSelectors.basePackage("org.fh.controller")) // 为当前包路径
-
.paths(PathSelectors.any())
-
.build();
-
}
-
-
private ApiInfo apiInfo() {
-
return new ApiInfoBuilder()
-
.title("FH Admin Swagger3 RESTful API") // 页面标题
-
.version("3.0") // 版本号
-
.description("fhadmin.cn") // 描述
-
.build();
-
}
-
-
/**
-
* 增加如下配置可解决Spring Boot 2.6.x以上 与Swagger 3.0.0 不兼容问题
-
**/
-
@Bean
-
public WebMvcEndpointHandlerMapping webEndpointServletHandlerMapping(WebEndpointsSupplier webEndpointsSupplier, ServletEndpointsSupplier servletEndpointsSupplier, ControllerEndpointsSupplier controllerEndpointsSupplier, EndpointMediaTypes endpointMediaTypes, CorsEndpointProperties corsProperties, WebEndpointProperties webEndpointProperties, Environment environment) {
-
List<ExposableEndpoint<?>> allEndpoints = new ArrayList();
-
Collection<ExposableWebEndpoint> webEndpoints = webEndpointsSupplier.getEndpoints();
-
allEndpoints.addAll(webEndpoints);
-
allEndpoints.addAll(servletEndpointsSupplier.getEndpoints());
-
allEndpoints.addAll(controllerEndpointsSupplier.getEndpoints());
-
String basePath = webEndpointProperties.getBasePath();
-
EndpointMapping endpointMapping = new EndpointMapping(basePath);
-
boolean shouldRegisterLinksMapping = this.shouldRegisterLinksMapping(webEndpointProperties, environment, basePath);
-
return new WebMvcEndpointHandlerMapping(endpointMapping, webEndpoints, endpointMediaTypes, corsProperties.toCorsConfiguration(), new EndpointLinksResolver(allEndpoints, basePath), shouldRegisterLinksMapping, null);
-
}
-
private boolean shouldRegisterLinksMapping(WebEndpointProperties webEndpointProperties, Environment environment, String basePath) {
-
return webEndpointProperties.getDiscovery().isEnabled() && (StringUtils.hasText(basePath) || ManagementPortType.get(environment).equals(ManagementPortType.DIFFERENT));
-
}
-
-
}
-
-
3.Swagger 拦截配置
-
-
package org.fh.config;
-
-
import org.springframework.context.annotation.Configuration;
-
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
-
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-
-
/**
-
* 说明:Swagger 拦截配置
-
* 作者:FH Admin
-
* from fhadmin.org
-
*/
-
@Configuration
-
public class WebMvcConfig implements WebMvcConfigurer {
-
-
@Override
-
public void addResourceHandlers(ResourceHandlerRegistry registry) {
-
registry.
-
addResourceHandler("/swagger-ui/**")
-
.addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/")
-
.resourceChain(false);
-
}
-
-
@Override
-
public void addViewControllers(ViewControllerRegistry registry) {
-
registry.addViewController("/swagger-ui/")
-
.setViewName("forward:/swagger-ui/index.html");
-
}
-
}
-
-
4. 访问 127.0.0.1:8081/swagger-ui/index.html
-
-
5. 接口说明案例
-
-
处理类上加注解,比如
-
@Api("用户注册登录接口")
-
-
在方法上加注解,比如
-
@ApiOperation(value = "登录", notes="请求登录验证用户接口,校验登录是否成功")
-
@ApiImplicitParam(name = "KEYDATA", value = "用户名密码混淆码组合", paramType = "query", required = true, dataType = "String")
-