參考: https://swagger.io/ https://swagger.io/docs/ https://swagger.io/tools/swagger-ui/ https://github.com/swagger-api/swagger-core/wiki/ https://github.com/swagger-api/swagger-ui/wiki http://springfox.github.io/springfox/ https://github.com/springfox/springfox http://springfox.github.io/springfox/docs/current/ https://github.com/springfox/springfox-demos https://github.com/springfox/springfox-demos/tree/2.9.2 https://github.com/springfox/springfox-demos/tree/3.0.0 1.引入依賴 <!-- springfox-boot-starter --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.6.15</version> </dependency> 2.配置類 import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; 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.*; 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.service.Contact; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import java.util.ArrayList; import java.util.Collection; import java.util.List; /** * 訪問:http://localhost:8080/swagger-ui/ */ @Configuration @EnableOpenApi public class Swagger3Config { private String basePackage = "com.xxx.xxx.controller"; @Bean public Docket createRestApi() { return new Docket(DocumentationType.OAS_30) .groupName("api") .enable(true) // .enable(!"prod".equals(active)) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage(basePackage)) // 基于包掃描 .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)) // 基于注解 .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) // 基于注解 .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("API 接口文檔") .description("Restful API 接口文檔") .version("1.0") .contact(new Contact("聯(lián)系人姓名","聯(lián)系人url","聯(lián)系人email")) .termsOfServiceUrl("服務(wù)條款URL") .license("xxx License Version 1.0") .licenseUrl("http://www.xxx.xxx/licenses/LICENSE-1.0") .build(); } /** * 增加如下配置可解決Spring Boot 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.編寫代碼Controller @Api(tags = "測試接口") @Controller @RequestMapping("/test") public class TestController { @Autowired private RedisTemplate redisTemplate; @ApiOperation("set value 操作") @ResponseBody @RequestMapping(value = "/set", method = RequestMethod.POST) public String setVal(String key, String value) { redisTemplate.opsForValue().set(key, value); return "success set val"; } @ApiOperation("get 操作") @ResponseBody @RequestMapping(value = "/get", method = RequestMethod.GET) public String getValue(String key) { String result = (String) redisTemplate.opsForValue().get(key); System.err.println("======> 返回結(jié)果result:" + result); return result; } } 4.訪問與測試:http://localhost:8080/swagger-ui/
文章來源地址http://www.zghlxwxcb.cn/news/detail-681330.html
文章來源:http://www.zghlxwxcb.cn/news/detail-681330.html
到了這里,關(guān)于swagger3 快速整合 springboot 2.6.15的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!