<!--swagger-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<!--swagger换皮肤-->
<groupId>com.github.caspar-chen</groupId>
<artifactId>swagger-ui-layer</artifactId>
<version>1.1.3</version>
</dependency>
@EnableOpenApi
Swagger3Config.java
import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
/**
* @author lzj
* @date 2021/8/27
*/
@Configuration
public class Swagger3Config {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.OAS_30)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.apis(RequestHandlerSelectors.basePackage("包路径.controller"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder() .title("标题名")
.description("描述")
.contact(new Contact("作者名", "", ""))
.version("1.0")
.build();
}
}
加在类上的描述信息
@Api(tags = "信息", description = "描述", value = "信息")
加在方法上的描述信息
// 生成方法的含义
@ApiOperation(value = "", notes = "")
//参数的含义
@ApiImplicitParam(name = "id",value = "用户的id",paramType = "",dataType = "Integer")
//返回值的含义
@ApiResponse(code = 200,message = "成功")
可以对实体类进行相关描述
@ApiModel("用户表")
public class User {
/**
* 用户id
*/
@ApiModelProperty(value = "用户id")
private Integer id;
}
swagger3的访问地址:127.0.0.1:8080/swagger-ui/index.html
swagger-ui-layer访问地址: 127.0.0.1:8080/docs.html
如果我们修改了springboot项目的静态路径的位置,会出现访问404的问题
mvc:
static-path-pattern: /static/**
我这里将静态路径访问的位置改成了static,我访问docs.html就404了
访问static/docs.html就一直转圈 , 无法获取 /static/v2/api-docs的数据
所以想要使用这个换皮肤的swagger不能更改那个静态资源路径
但是我要访问static下的文件通过 /static/xxx.js 之类的
因为我集成了shiro需要全部放行静态资源 /static/**下的所有路径
而默认springboot是将static下的文件直接放到根路径下可以访问
所以我就无法通过static/xxx.js访问,springboot会转换成/xxx.js
然后就被拦住了
1 .上面的配置,但是无法使用swagger-ui-layer了
2.配置一个资源路径映射就可以了
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//将所有/static/** 访问都映射到classpath:/static/ 目录下
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
}