Задать список объектов в ответе API Swagger

Я хочу отправить список объектов в ответ API, используя Swagger.

@ApiResponse(code = 200, message = ApiResponseMessages.ITEM_FETCHED, 
response = "")

У меня есть класс -

class Item{
   int id;
   String item_name;
}

Я хочу ответ как -

{
    {
       "id" : 0,
       "item_name" : ""
    }
    {
       "id" : 0,
       "item_name" : ""
    }
    {
       "id" : 0,
       "item_name" : ""
    }
}

Как я могу это сделать. Любая помощь будет оценена.

4 ответа

Решение

Просто оберните список в один объект следующим образом:

public class ItemWrapper{
private List<Item> items;
}

И поставить класс ItemWrapperкак ответ API:

@ApiResponse(code = 200, message = ApiResponseMessages.ITEM_FETCHED, 
response = ItemWrapper.class)

Вы также можете установить ApiReponse следующим образом:

@ApiResponse(code = 200, message = ApiResponseMessages.ITEM_FETCHED,
             response = Item.class, responseContainer = "List"
            )

Он вернется:

[
    {
       "id" : 0,
       "item_name" : ""
    },
    {
       "id" : 0,
       "item_name" : ""
    },
    {
       "id" : 0,
       "item_name" : ""
    }
]

Для нового пакета: io.swagger.v3.oas.annotations.responses.ApiResponse

Вам нужно сделать это (с @ArraySchema аннотация):

      @ApiResponse(responseCode = "200", description = "",
            content = {@Content(
                mediaType = "application/json",
                array = @ArraySchema(schema = @Schema(implementation = Bar.class))
            )}
)

Вы можете использовать responseContainer = "List", как показано ниже:

@ApiOperation(value = "retrieve items", response = Item.class, responseContainer = "List")
Другие вопросы по тегам