使用Docket.globalRequestParameters的话,每个 REST API 都会有这么一个 request header,但是我每次都要设置,有没有可以全局设置美国服务器的方法?
如果是 auth 类 header 会有个小锁
new Docket(DocumentationType.SWAGGER_2)
.useDefaultResponseMessages(false)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.xx"))
.paths(PathSelectors.any())
.build().securitySchemes(securitySchemes())
//.globalOperationParameters(globalOperationParameters())
.securityContexts(securityContexts());
private List
securitySchemes() {
ArrayList list = new ArrayList<>();
list.add(new ApiKey("Authorization", "Authorization", "header"));
return list;
}
private List securityContexts() {
return Collections.singletonList(
SecurityContext.builder()
.securityReferences(defaultAuth())
.forPaths(PathSelectors.any())
.build()
);
}
private List defaultAuth() {
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
return Collections.singletonList(
new SecurityReference("Authorization", authorizationScopes));
}
//如果是普通的 header
new Docket(DocumentationType.SWAGGER_2)
.useDefaultResponseMessages(false)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.xx"))
.paths(PathSelectors.any())
.build()
//.securitySchemes(securitySchemes())
.globalOperationParameters(globalOperationParameters())
;
private List globalOperationParameters() {
ArrayList list = new ArrayList<>();
Parameter parameter = new ParameterBuilder().name("key").required(true)
.description("").parameterType("header").defaultValue("")
.allowMultiple(false)
.modelRef(new ModelRef("string")).build();
list.add(parameter);
return list;
}
这个就是全局的 header .如果你要默认值就把 defaultValue 加上就可以了
globalOperationParameters 只能在代码写死默认值吗?不可以在页面上设置默认值吗?
不知道普通的 header 可以不可以, 不过 auth 类 header 是可以的. 你可以用我说的第一种的 ,设置一次就可以了
好吧,谢谢啦。因为那个 header 跟 OAuth 没有关系,所以不想使用 securitySchemes 那些