Springfox - добавление модели вручную, программно - PullRequest
0 голосов
/ 21 января 2019

Я хотел бы добавить пользовательский контроллер в дескриптор API Swagger.С весенней лисой это довольно легко сделать на заказ существующей модели.Но мне не удается добавить собственный API в дескриптор сваггера с нуля.Пример лучше, чем длинная речь.

Я сделал тестовый проект springfox-test

У меня есть контроллер (ItemController), который обрабатывает два URL (/item/nameи /item/number) и вернуть два разных bean-компонента (ItemName и ItemNumber).

Не было так сложно добавить обе операции в Swagger через реализацию ApiListingScannerPlugin, но мне пришлось сделать ссылку намои бины (ItemName и ItemNumber), и я не знаю, как и где я могу описать эти бины.

Кажется, что класс ApiListingBuilderPlugin работает таким образом, но мы можем получить доступ только к построителю API и затемЯ должен переопределить все модели.

Есть ли способ попросить весеннюю лису описать эти бобы?

1 Ответ

0 голосов
/ 22 января 2019

ApiListingScannerPlugin кажется гораздо больше работы, чем необходимо для простого API.Вы сможете удалить этот плагин, а также компонент SimpleUrlHandlerMapping и просто реализовать контроллер следующим образом.

@RestController
public class ItemController {
    @GetMapping("/item/name")
    public ItemName foo(@RequestParam("value") ItemName name) {
        return name;
    }

    @GetMapping("/item/number")
    public ItemNumber bar(@RequestParam("value") Integer number) {
        return new ItemNumber(number);
    }
}

Springfox обнаружит две конечные точки и две модели на основе этих сигнатур методови должен сгенерировать описание Swagger соответственно.

...