Как описать стандартный ответ на ошибку Spring в схеме Springdo c? - PullRequest
1 голос
/ 08 июля 2020

Ответ сервера приложения SpringBoot по умолчанию в случае необработанных ошибок:

{
    "timestamp": 1594232435849,
    "path": "/my/path",
    "status": 500,
    "error": "Internal Server Error",
    "message": "this request is failed because of ...",
    "requestId": "ba5058f3-4"
}

Я хочу описать его в аннотации Springdo c для маршрутов приложения.

Предполагая, что существует стандартный класс DefaultErrorResponse (просто фиктивное имя), он может выглядеть следующим образом:

@Operation(
  // ... other details
  responses = {
    // ... other possible responses
    @ApiResponse(
      responseCode = "500",
      content = @Content(schema = @Schema(implementation = DefaultErrorResponse.class)))
  }
)

В худшем случае такой класс не существует, а Spring использует только Map под капотом для создания этого ответа. Тогда эта аннотация будет более подробной, включая явное упоминание каждого поля, содержащегося в ответе.

Очевидно, что для большинства маршрутов эта часть @ApiResponse(responseCode="500",... одинакова, и было бы неплохо уменьшить дублирование.

Как правильно ввести описание ответа об ошибке по умолчанию в документации?

1 Ответ

2 голосов
/ 11 июля 2020

Для обработки ошибок вы используете @RestControllerAdvice в сочетании с @ExceptionHandler, чтобы реорганизовать обработку ошибок.

Эти аннотации Spring автоматически сканируются springdo c -openapi. Без необходимости добавлять какую-либо дополнительную аннотацию.

...