У меня есть куча разных методов.Все они 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
над каждым методом.
Оба не работали как задумано.Каков наилучший способ сделать это