Swagger @ApiResponse должен отображать список ErrorObject, т.е. List <MyErrorObject>? Как это возможно?

Версия swagger, которую я использую, приведена ниже, и мой вопрос связан с аннотацией @ApiResponse .

      <dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger2</artifactId>
  <version>2.9.2</version>
  <scope>compile</scope>
</dependency>
<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger-ui</artifactId>
  <version>2.9.2</version>
  <scope>compile</scope>
</dependency>

Когда пользователь обращается к моему api, и если пользователь предоставляет недопустимые данные / ввод, мое приложение возвращает список ошибок во вводимых пользователем данных. Каждая ошибка фиксируется в объекте ошибки

      MyErrorObject 
{
  Date date;
  String errorCode;
  String errorMessage;
  //getters //setters
}

-так что мой ответ приложения в случае недопустимого ввода пользователя будет выглядеть примерно так, как показано ниже -

      [
    {
        "date": "2021-09-22",
        "errorCode": "6548",
        "errorMessage": "there are no booking available in selected city"
    },
    {
        "date": "2021-09-22",
        "errorCode": "2649",
        "errorMessage": "your age does not allow you to travel to this location"
    }
]

--- Теперь вернемся к моему вопросу - используя аннотацию swagger @ApiResponse, я хочу, чтобы пользователи api знали формат ответа. Итак, я попробовал ниже

      @ApiResponse(code = HttpURLConnection.HTTP_BAD_REQUEST,
          message = ErrorConstants.NotAllowed, response=List<MyErrorObject>.class)

Но выше не сработало, я вижу ниже ошибку времени компиляции -

Синтаксическая ошибка, вставьте "}" для завершения MemberValueArrayInitializer

Я пробовал - другие комбинации тоже, как показано ниже, но не повезло -

      @ApiResponse(code = HttpURLConnection.HTTP_BAD_REQUEST,
          message = ErrorConstants.NotAllowed, response=List<MyErrorObject.class>)

Итак, как правильно представить список ошибок с помощью аннотации @ApiResponse ?? Таким образом, ответ об ошибке в документе swagger выглядит примерно так:

      [
 {
  "date": "Date",
  "errorCode": "string",
  "errorMessage": "string"
 }
]

1 ответ

Решение

From the definition of the ApiResponse.class, it's evident they have a responseContianer attribute that you can set to achieve the desired result.

      @ApiResponse(
    code = HttpURLConnection.HTTP_BAD_REQUEST,
    message = ErrorConstants.NotAllowed, 
    response = MyErrorObject.class,
    responseContainer = "List"
)
Другие вопросы по тегам