FAQ 1. 在接口中添加统一的鉴权参数:Authorization
@Bean
public GlobalOpenApiCustomizer globalOpenapiCustomizer() {
return openApi -> {
String auth = "Authorization";
SecurityRequirement securityRequirement = new SecurityRequirement();
securityRequirement.addList(auth);
Components components = Optional.ofNullable(openApi.getComponents()).orElseGet(Components::new);
components.addSecuritySchemes(auth, new SecurityScheme().name(auth).type(SecurityScheme.Type.HTTP).in(SecurityScheme.In.HEADER));
openApi.addSecurityItem(securityRequirement).components(components);
openAPI.getPaths().forEach((path, pathItem) -> {
// 为所有接口添加鉴权,不然接口调试时是看不到这个参数设置的.
pathItem.readOperations().forEach(operation -> operation.addSecurityItem(securityRequirement));
});
};
}
FAQ 2. 统一为所有接口附加参数
支持四类参数,均为
io.swagger.v3.oas.models.parameters.Parameter的子类,分别对应in属性的位置.
in | Class |
cookie | CookieParameter |
header | HeaderParameter |
path | PathParameter |
query | QueryParameter |
/* 统一追加参数在operation对象上追加.*/
groupedOpenApi.addOperationCustomizer((op,method)->{
op.addParametersItem(new PathParameter().name("userName").schema(new StringSchema()).description("姓名").example("张三"));
op.addParametersItem(new QueryParameter().name("userCode").schema(new StringSchema()).description("简称").example("-"));
return op;
});
FAQ 3. 接口加入自定义过滤逻辑
/* OpenApiMethodFilter 接口实现接口的过滤.*/
groupedOpenApi.addOpenApiMethodFilter(method->{
// 过滤只有添加了@Operation 注解的接口定义才聚合到文档中去.
return AnnotationUtils.findAnnotation(method, Operation.class) != null;
});
本文暂时没有评论,来添加一个吧(●'◡'●)