Создать общий компонент с аннотациями Swagger - PullRequest
0 голосов
/ 22 февраля 2019

Я использую аннотацию swagger для моего проекта весенней загрузки.

Я хочу вернуть контракт общего кода ответа для каждого ресурса моего контроллера.

В документе: https://github.com/swagger-api/swagger-core/wiki/annotations#apiresponses-apiresponse они говорят о @ApiResponses, но я не могу поместить аннотацию на уровне класса.

Вот что я сделал:

@Api(value = "Title",
    description = "What this controller is about"
)
@ApiResponses(value = { 
    @ApiResponse(code = 400, message = "Bad stuff from the client"),
    @ApiResponse(code = 404, message = "Item not found") }
    )
public class FooBarController {

      ...

}

Но проблема в том, что 400 - Bad stuff from the clientи 404 - Item not found никогда не показываются в сгенерированном документе.

В официальном документе о чванстве я видел этот раздел: https://swagger.io/docs/specification/describing-responses/#reuse

Вопрос: Как я могу создать вид "многоразового использования"компонент "с Java-аннотациями?

Спасибо

1 Ответ

0 голосов
/ 22 февраля 2019

Согласно документации, вы можете сделать это на уровне Docket.

.useDefaultResponseMessages(false)
        .globalResponseMessage(RequestMethod.GET,
            newArrayList(new ResponseMessageBuilder()
                .code(400)
                .message("Bad stuff from the client")
                .build()))

https://springfox.github.io/springfox/docs/current/#springfox-spring-mvc-and-spring-boot

Обновление:

Если вы хотите пройти маршрут аннотации, вы можете создать свой собственный и разместить его на своем контроллере.

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@ApiResponses(value = { 
    @ApiResponse(code = 400, message = "Bad stuff from the client"),
    @ApiResponse(code = 404, message = "Item not found") }
    )
public @interface GlobalApiReponses {
}

Затем используйте его.

@Api(value = "Title",
    description = "What this controller is about"
)
@GlobalApiReponses
public class FooBarController


Комбинация подходов также может быть хорошим вариантом.

@Target (ElementType.TYPE) означает, что вы можете применитьэто на уровне класса.Вы можете сделать то же самое для методов, используя ElemenType.METHOD.

...