Рассмотрим пример:
@RequestMapping("myPath")
public Mono<MyDto> myMethod(@RequestParam(value = "amount") Long amount, @AuthenticationPrincipal MyUser user) {
}
Чтобы пропустить MyUser
из списка параметров, я добавил @AuthenticationPrincipal
к исключениям и сгенерированным Springfox документам swagger:
"/myPath": {
"get": {
"tags": [
"my-controller"
],
"summary": "myMethod",
"operationId": "myMethodUsingGET",
"produces": [
"*/*"
],
"parameters": [
{
"name": "amount",
"in": "query",
"description": "amount",
"required": true,
"type": "integer",
"format": "int64"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/Mono«MyDto»"
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"deprecated": false
}
}
Вотконфигурация spring:
@Configuration
@EnableSwagger2WebFlux
public class SwaggerConfig {
@Bean
public Docket api() {
Class[] clazz = {AuthenticationPrincipal.class};
return new Docket(DocumentationType.SWAGGER_2)
.select()
.paths(PathSelectors.any())
.build()
.ignoredParameterTypes(clazz);
}
}
Есть ли способ добавить заголовок в документацию swagger, сгенерированную проектом springfox для каждого пути, где указано @AuthenticationPrincipal
?Например, игнорируйте класс MyUser
как параметр (или группу параметров) и замените его заголовком (например, My-Auth-Header
) для всех методов @RequestMapping
, где найден @AuthenticationPrincipal
.