Swagger 原生
包添加
<dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version></dependency>
开启Swagger
在Spring Boot 启动类添加注解
@EnableOpenApi
Swagger 配置类
@Configurationpublic class SwaggerConfig {@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.OAS_30).enable(true).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).paths(PathSelectors.any()).build();}private ApiInfo apiInfo() {return new ApiInfoBuilder()// title.title("title")// 详细.description("详情描述")// 地址.termsOfServiceUrl("http://www.baidu.io")// 版本.version("1.0").build();}}
访问地址
http://127.0.0.1/swagger-ui/index.html
knife4j
添加 JAR
<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.3</version></dependency>
创建配置文件
@EnableSwagger2@EnableKnife4j@Configurationpublic class Knife4jConfiguration {@Value("${enable}")private boolean enable;@Beanpublic Docket defaultApi2() {Docket docket = new Docket(DocumentationType.OAS_30).enable(enable).apiInfo(apiInfo()).select()// 这里指定Controller扫描包路径.apis(RequestHandlerSelectors.basePackage("com.nuxi.zf.modular.api.controller")).paths(PathSelectors.any()).build();return docket;}private ApiInfo apiInfo() {return new ApiInfoBuilder()// title.title("支付 API")// 详细.description("支付 API")// 地址.termsOfServiceUrl("http://www.nuxi.io")// 版本.version("1.0").build();}}
Spring Boot 部分版本过高导致 doc.html 无法访问
@Configurationpublic class StaticFileConfig implements WebMvcConfigurer {@Autowiredprivate ConfigService configService;@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {Config config = configService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getCode, "staticFileStatus"));if (null == config) {config = insertStaticFileStatus();}if (Integer.valueOf(config.getValue()) == 1) { // spring boot 静态文件形式访外部资源String staticFilePath = configService.getStaticFilePath();registry.addResourceHandler("/**") // 静态资源对外暴露的访问路径.addResourceLocations("classpath:/static/") // 工程静态文件.addResourceLocations("file:" + staticFilePath + "/"); // 外部静态路径// 解决swagger无法访问registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");// 解决swagger的js文件无法访问registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");} else { // Nginx 文件服务器方式访问外部资源// 解决静态资源无法访问registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");// 解决swagger无法访问registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");// 解决swagger的js文件无法访问registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");}}private Config insertStaticFileStatus() {Config config = Config.builder().name("静态资源访问状态").code("staticFileStatus").value("2").flag(1).remark("本地静态资源访问方式; 1 - spring boot 静态文件形式访问; 2 - Nginx 文件服务器方式访问").sort(1000).build();configService.save(config);return config;}}
启动类添加注解
@EnableWebMvc
