SpringBoot集成Swagger3.0
点击上方蓝色字体,选择“标星公众号”
优质文章,第一时间送达
1、pom.xml
io.springfox
springfox-boot-starter
3.0.0
2、SwaggerConfig
/**
* @author: zek
* @desc: swagger
*/
@EnableOpenApi
@Configuration
public class SwaggerConfig implements WebMvcConfigurer {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.OAS_30)
.pathMapping("/")
// 定义是否开启swagger,false为关闭,可以通过变量控制
.enable(true)
// 将api的元信息设置为包含在json ResourceListing响应中。
.apiInfo(apiInfo())
// 接口调试地址
.host("http://localhost:8080")
// 选择哪些接口作为swagger的doc发布
.select()
.apis(RequestHandlerSelectors.basePackage("xx.xx.xx.controller"))
.paths(PathSelectors.any())
.build()
// 支持的通讯协议集合
.protocols(Sets.newHashSet("http", "https"))
// 授权信息设置,必要的header token等认证信息
.securitySchemes(securitySchemes())
// 授权信息全局应用
.securityContexts(securityContexts());
}
/** API 页面上半部分展示信息 */
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title(" Api Doc")
.description("SpringFox 3.0.0 发布: https://xx.xx.xx/xx/swagger-ui/index.html")
.contact(new Contact("lighter", null, "xx@163.com"))
.version(
"Application Version: "
+ "1.0.0"
+ ", Spring Boot Version: "
+ SpringBootVersion.getVersion())
.build();
}
/** 设置授权信息 */
private List securitySchemes() {
ApiKey apiKey = new ApiKey("BASE_TOKEN", "token", In.HEADER.toValue());
return Collections.singletonList(apiKey);
}
/** 授权信息全局应用 */
private List securityContexts() {
return Collections.singletonList(
SecurityContext.builder()
.securityReferences(
Collections.singletonList(
new SecurityReference(
"BASE_TOKEN",
new AuthorizationScope[] {new AuthorizationScope("global", "")})))
.build());
}
/** 通用拦截器排除swagger设置,所有拦截器都会自动加swagger相关的资源排除信息 */
@SuppressWarnings("unchecked")
@Override
public void addInterceptors(InterceptorRegistry registry) {
try {
Field registrationsField =
FieldUtils.getField(InterceptorRegistry.class, "registrations", true);
List registrations =
(List) ReflectionUtils.getField(registrationsField, registry);
if (registrations != null) {
for (InterceptorRegistration interceptorRegistration : registrations) {
interceptorRegistration
.excludePathPatterns("/swagger**/**")
.excludePathPatterns("/webjars/**")
.excludePathPatterns("/v3/**")
.excludePathPatterns("/doc.html");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
3、使用
entity中的@ApiModel注解中的参数加了和没加一个效果,所以,直接写@ApiModel就可以了。
@ApiParam(value = “文章ID”) 注解中的value参数只有和:@PathVariable(value = “id”) 以及@RequestParam使用,value参数才会有效果。其他没有
1.controller层使用
@Api(tags = {"1. 文章"})
@RestController
@RequestMapping("/article")
public class ArticleController {}
2.接口使用
@ApiOperation(value = "文章列表")
@GetMapping("/article")
public Result
3.Model使用
@ApiModel(value = "ArticleListReq文章列表请求实体")
@Data
public class ArticleListReq {
@ApiModelProperty(value = "pageNum")
private Integer pageNum;
@ApiModelProperty(value = "pageSize")
private Integer pageSize;
@ApiModelProperty(value = "关键字搜索:标题、描述、内容")
private String keyword;
@ApiModelProperty(value = "资源类型")
private Integer type;
}
4.忽略接口
@ApiIgnore
5.Swagger-ui URL
https://ip:port或域名/设置的请求前缀/swagger-ui/index.html#/
6.base-error-controller
SwaggerConfig新增指定包
.apis(RequestHandlerSelectors.basePackage("xx.xx.xx.controller"))
4、查看页面
5、发现部分注解参数使用了,并没有效果,
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:
https://blog.csdn.net/qq_17213067/article/details/111573316
粉丝福利:Java从入门到入土学习路线图
???
?长按上方微信二维码 2 秒
感谢点赞支持下哈
评论