【发布时间】:2020-09-24 05:35:18
【问题描述】:
我正在使用springdoc-openapi-ui。我已经配置了名为Authorization 的全局头文件。
当我执行 API Authorization 时,请求的 CURL 中没有显示。除了Authorization,我的其他参数都显示在 CURL 中。
以前,我使用的是springfox-swagger-ui,当时它显示在 CURL 部分。
我已经搜索过相同的内容,并在https://swagger.io/docs/specification/describing-parameters/#header-parameters 上找到了注释
Note: Header parameters named Accept, Content-Type and Authorization are not allowed.
但我要求仅使用 Authorization 作为标题。我们有什么办法可以做到这一点?
下面添加了我的SwaggerConfiguration。
@Configuration
public class SwaggerConfiguration {
@Value("${title:title}")
private String title;
@Value("${description:description.}")
private String description;
@Value("${version:0.0.1}")
private String version;
@Value("${schemeId}")
String schemeIdentifier;
@Bean
public OperationCustomizer customGlobalHeaders() {
return (Operation operation, HandlerMethod handlerMethod) -> {
Parameter authorization = new Parameter().in(ParameterIn.HEADER.toString()).name("Authorization")
.description("Authorization details JWT token")
.schema(new StringSchema()).required(true);
Parameter applicationId = new Parameter().in(ParameterIn.HEADER.toString()).schema(new StringSchema())
.name("Application-Id").description("Originating application or client using the service")
.required(false);
operation.addParametersItem(authorization);
operation.addParametersItem(applicationId);
return operation;
};
}
@Bean
public GroupedOpenApi adminApi() {
String[] packagesToscan = { "abc.controller" };
return GroupedOpenApi.builder().setGroup("Client").packagesToScan(packagesToscan).build();
}
@Bean
public OpenAPI customOpenAPI() {
return new OpenAPI().info(new Info().title(title).version(version).description(description))
.components(new Components());
}
}
【问题讨论】:
-
您需要使用会生成
securitySchemes+security(如果您使用 OpenAPI 3.0)或securityDefinitions+security(在 OpenAPI 2.0 中)的注释 - 这就是Authorization标头已定义。 -
感谢您的宝贵时间。我明白你的意思了。我有 300 多个 https 方法,因此对于每个方法我都需要使用注释,这非常耗时。如果有的话,我正在寻找通用解决方案。
标签: java spring-boot spring-security swagger-ui springdoc-openapi-ui