Как дважды перечислить один и тот же метод GET в Swagger, интегрированный в Spring Boot - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть @RestController с методом GET, чтобы перечислить все экземпляры ресурса R

Я хочу swagger-ui трижды перечислить этот GET метод следующим образом:

  • findRByFoo
  • findRByBar
  • findRByFooAndBar

, что соответствует следующим GET петициям:

  • /resources?foo=myFoo
  • /resources?bar=myBar
  • /resources?foo=myFoo&bar=myBar

так что клиенты моего API Rest не должны догадываться, что они могут искать по foo или bar и могут просто посмотреть на swagger-ui (версия 2.9.2) и использовать эти вызовы API

Однако, учитывая, что три метода находятся на пути /resources, swagger просто перечисляет один из них и только один.

Вопрос в том, Как мне перечислить три вызова API?

Редактировать : Кажется, это ограничение Swagger 2 Невозможно добавить несколько операций с одним и тем же путем в документацию по API отдыха swagger # 1378 , поэтому позвольте мне перефразировать вопрос следующим образом:

  • Как мне обойти это ограничение?
  • Означает ли это, что дизайн моего API Rest не такой, как Rest , как должно быть?

1 Ответ

0 голосов
/ 19 сентября 2018

Я переписал RController, чтобы получить один GET

@RestController("/path-to-r")
public class RController
{
    @GetMapping
    public List<R> findR(Optional<String> foo, Optional<String> bar)
    {
     ....
    }

}

И добавил genericModelSubstitutes, как объяснено в Java 8 Необязательный @RequestParam, потерянный от пользовательского интерфейса # 1848

Окончательный результат таков, что, когда клиенты моего API щелкают в комбо, они могут видеть два необязательных параметра, которые нужно включить в петицию GET

enter image description here

...