如何在Spring Boot中集成的Swagger中列出两次相同的GET方法

时间:2018-09-18 05:31:04

标签: spring-boot swagger swagger-ui

我有一个@RestController和一种GET方法,用于列出资源R的所有实例

我希望swagger-ui列出三次这种GET方法,如下所示:

  • findRByFoo
  • findRByBar
  • findRByFooAndBar
与以下GET个请愿书相对应的

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

以便我的API Rest的客户端不必猜测它们可以通过foobar进行搜索,而只需查看swagger-ui(版本{{1} })并使用这些API调用

但是,鉴于这三种方法位于2.9.2路径下,挥舞者只列出其中一种,而只列出一种。

问题是,如何列出三个API调用?

编辑:这似乎是Swagger 2 Unable to add multiple operations on same path in swagger rest API documentation #1378的局限性,所以我将问题改写为:

  • 我如何规避此限制?
  • 这是否意味着我的API Rest的设计没有达到应有的 Rest

1 个答案:

答案 0 :(得分:0)

我将RController改写为只有一个GET

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

}

并按照Java 8 Optional @RequestParam lost from the swagger-ui #1848

中的说明添加了genericModelSubstitutes

最终结果是,当我的API的客户端单击组合时,他们可以看到要包含在GET请愿书中的两个可选参数

enter image description here