SwaggerUI - Как создавать собственные глобальные ответные сообщения при сохранении тела ответа - PullRequest
0 голосов
/ 05 марта 2019

У меня есть куча разных методов.Все они POST и могут выводить одинаковые коды состояния (200, 400, 500), но разные тела ответа.По умолчанию тела были правильными, а коды состояния - нет (у них были 401, 402 и т. Д.).

Я уже отключил коды состояния по умолчанию.

Первая попытка

Я попытался добавить метод globalResponseMessage в Docker:

    public Docket apiDocket() {
    return new Docket(DocumentationType.SWAGGER_2)
            .useDefaultResponseMessages(false)
            .globalResponseMessage(RequestMethod.POST, ImmutableList.of(new ResponseMessage(200, "Some global OK message",null)))
            .select()
            .apis(RequestHandlerSelectors.any())
            .paths(PathSelectors.any())
            .build()            
            .apiInfo(getApiInfo()); 
}

Однако это не сработало, поскольку в пользовательском интерфейсе не отображался код состояния.Однако сгенерированное тело ответа осталось.

Вторая попытка

Я пытался использовать аннотацию @ApiResponses для методов.

@ResponseBody
@PostMapping("/path") 
@ApiResponses(value = {
        @ApiResponse(code = 200, message = "Request successful"), 
        @ApiResponse(code = 400, message = "Bad Request - Check for correct syntax"), 
        @ApiResponse(code = 500, message = "Internal Server Error")})
public StringWrapper method(@RequestBody Container params) throws IOException {
    //lorem ipsum
}

This действительно показывал правильные коды состояния в пользовательском интерфейсе, однако больше не показывал тела ответа, сгенерированного в противном случае.Также было бы много лишнего кода, если бы я написал аннотацию @apiClasses над каждым методом.

Оба не работали как задумано.Каков наилучший способ сделать это

...