专业的编程技术博客社区

网站首页 > 博客文章 正文

Swagger 3 使用过程知识点集锦-1

baijin 2025-03-07 15:53:28 博客文章 61 ℃ 0 评论

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;
});

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表