springfox-swagger-ui:如何从全局参数中排除路由
springfox-swagger-ui: How to exclude routes from global parameter
假设我为所有 API 创建了一个全局参数 token
:
List<Parameter> commonParameters = new ArrayList<>();
commonParameters.add(new ParameterBuilder()
.name("token")
.description("Token for api access")
.modelRef(new ModelRef("string"))
.parameterType("header")
.required(true)
.build());
return new Docket(DocumentationType.SWAGGER_2)
.globalOperationParameters(commonParameters)
// rest ignored .....
几乎每个 API 都需要此令牌,但可以公开访问的除外。如何从全局操作参数中排除这个API?
目前未提供对 globalOperationParameters
的排除,在此 GitHub issue 中有一个开放的功能请求。
我发现的唯一解决方法是使用 @ApiImplicitParams
注释覆盖全局定义的 header。
所以在你的情况下:
@ApiImplicitParams({
//Overriding global behavior.
@ApiImplicitParam(
name = "token")
})
不幸的是,header 在 swagger 上仍然可见,但参数不会被标记为必需。
假设我为所有 API 创建了一个全局参数 token
:
List<Parameter> commonParameters = new ArrayList<>();
commonParameters.add(new ParameterBuilder()
.name("token")
.description("Token for api access")
.modelRef(new ModelRef("string"))
.parameterType("header")
.required(true)
.build());
return new Docket(DocumentationType.SWAGGER_2)
.globalOperationParameters(commonParameters)
// rest ignored .....
几乎每个 API 都需要此令牌,但可以公开访问的除外。如何从全局操作参数中排除这个API?
目前未提供对 globalOperationParameters
的排除,在此 GitHub issue 中有一个开放的功能请求。
我发现的唯一解决方法是使用 @ApiImplicitParams
注释覆盖全局定义的 header。
所以在你的情况下:
@ApiImplicitParams({
//Overriding global behavior.
@ApiImplicitParam(
name = "token")
})
不幸的是,header 在 swagger 上仍然可见,但参数不会被标记为必需。