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"
)