一:引入Swagger依赖
<!--使用swagger规范接口-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger2.version}</version>
</dependency>
<!--swagger访问页面-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger2.version}</version>
</dependency>
二:网关服务配置
1、配置类
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger.web.*;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
//是否开启swagger
@Value("${swagger.enable}")
private boolean enableSwagger;
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.enable(enableSwagger);
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("xxx项目")
.description("接口文档")
.termsOfServiceUrl("url")
.version("1.0")
.build();
}
@Bean
UiConfiguration uiConfig() {
return new UiConfiguration(true, false, -1, -1,
ModelRendering.MODEL, true, DocExpansion.LIST, null, null,
OperationsSorter.ALPHA, true, TagsSorter.ALPHA, null);
}
}
2、多环境下的yml中是否开启swagger
本地环境:
application-dev
swagger:
enable: true
生产环境:
application-prd
swagger:
enable: false
三:其他服务配置
1、配置类
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger.web.*;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import java.util.List;
/**
* @Auther: 61431
* @Date: 2020/2/11 11:10
* @Description:
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Value("${swagger.enable}")
private boolean enableSwagger;
@Bean
public Docket api() {
ParameterBuilder ticketPar = new ParameterBuilder();
List<Parameter> pars = new ArrayList<Parameter>();
ticketPar.name("Authorization").description("身份token")
.modelRef(new ModelRef("string")).parameterType("header")
.required(false).build(); //header中的ticket参数非必填,传空也可以
pars.add(ticketPar.build()); //根据每个方法名也知道当前方法在设置什么参数
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.enable(enableSwagger)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build()
.globalOperationParameters(pars);
}
//基本信息,页面展示
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("xxx接口文档")
.description("接口描述")
.build();
}
@Bean
UiConfiguration uiConfig() {
return new UiConfiguration(true, false, -1, -1,
ModelRendering.MODEL, true, DocExpansion.LIST, null, null,
OperationsSorter.ALPHA, true, TagsSorter.ALPHA, null);
}
}
2、多环境下的yml中是否开启swagger
本地环境:
application-dev
swagger:
enable: true
生产环境:
application-prd
swagger:
enable: false
四、访问路径和效果
1、访问路径
http://localhost:网关端口/swagger-ui.html
2、切换服务
3、展示效果