赞
踩
目录
- <dependency>
- <groupId>io.springfox</groupId>
- <artifactId>springfox-boot-starter</artifactId>
- <version>${io.springfox.version}</version>
- </dependency>
- <dependency>
- <groupId>com.github.xiaoymin</groupId>
- <artifactId>knife4j-spring-boot-starter</artifactId>
- <version>${knife4j.version}</version>
- </dependency>
- <io.springfox.version>3.0.0</io.springfox.version>
- <knife4j.version>3.0.3</knife4j.version>
@Tag:标识Controller
@Operation:标识方法
@Schema:标识字段
常用三个注解,其他不再赘述,请自行百度。
- @EnableOpenApi
- @Configuration
- @EnableKnife4j
- public class Swagger3Config {
-
- //服务名称
- @Value("${swagger3.name}")
- private String name;
- //开关
- @Value("${swagger3.enable}")
- private Boolean enable;
- //版本
- @Value("${swagger3.version}")
- private String version;
- //描述
- @Value("${swagger3.description}")
- private String description;
- //分组
- @Value("${swagger3.group}")
- private String group;
- //扫描路径
- @Value("${swagger3.selector}")
- private String selector;
-
- @Bean
- public Docket docketForCommon(Environment environment) {
- // 如果没有配置开关 那么开发测试环境打开、正式环境关闭
- if (enable == null){
- //设置要显示的swagger环境
- Profiles profiles = Profiles.of("dev","test");
- //判断当前环境是否为开发测试环境
- enable = environment.acceptsProfiles(profiles);
- }
- return new Docket(DocumentationType.OAS_30)
- .apiInfo(apiInfo())//文档基础信息
- //整合请求头authorization 原生页面传参时需要手动去掉Bearer
- .securitySchemes(Collections.singletonList(HttpAuthenticationScheme.JWT_BEARER_BUILDER
- .name("Authorization")//页面展示字段
- .build()))
- .securityContexts(Collections.singletonList(SecurityContext.builder()
- .securityReferences(Collections.singletonList(SecurityReference.builder()
- .scopes(new AuthorizationScope[0])
- .reference("Authorization")
- .build()))
- .operationSelector(o -> o.requestMappingPattern().matches("/.*"))// 声明作用域
- .build()))
- .groupName(group)// 分组信息 多人开发注册多个bean
- .enable(enable)// 是否启用
- .select()
- //.withClassAnnotation(RestController.class)表示扫描类上有@RestController注解的类上接口
- //.withMethodAnnotation(GetMappering)扫描GetMappering方法接口
- .apis(RequestHandlerSelectors.basePackage(selector))// .basePackage()扫描指定路径下的所有接口 .any() 全扫描 .none() 全不扫描
- .paths(PathSelectors.any())//路径过滤
- .build();
- }
-
- private ApiInfo apiInfo() {
- return new ApiInfoBuilder()
- .title(name)//标题
- .description(description)//描述
- .version(version)//版本
- .build();
- }

- # swagger3配置
- swagger3:
- # 服务名称
- name: test
- # 是否启动
- enable: true
- # 项目版本
- version: v1.0.0
- # 文档描述
- description: Test说明文档
- # 分组信息
- group: common
- # 扫描路径
- selector: com.test.testController
其中:
/v3、/swagger-resources、/swagger-ui、/swagger-ui/index.html为原生Swagger3需要请求的路径/资源。
/webjars、/favicon.ico/、/doc.html为knief4j美化需要请求的路径/资源。
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;暴露端口和ip,提供给swagger3进行测试请求。
- location ~* ^(/v3|/swagger-resources|/swagger-ui|/swagger-ui/index.html|/webjars/|/favicon.ico/|/doc.html) {
- proxy_redirect off;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto $scheme;
- proxy_pass http://yourserver;
- proxy_set_header X-Forwarded-Host $host;
- proxy_set_header X-Forwarded-Port $server_port;
-
- }
- upstream yourserver{
- server ip:port;
- }
原生:
knief4j:
项目内如jwt之类的鉴权功能记得放行。
- if (requestURI.startsWith("/swagger")||requestURI.startsWith("/v3")||requestURI.startsWith("/webjars")||requestURI.startsWith("/favicon")
- ||requestURI.startsWith("/doc")||excludeUrls.contains(requestURI)) {
- //Swagger放行
- filterChain.doFilter(request, response);
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。