Swagger UI支持重载方法(springfox-swagger-ui 2.9.0-RFC6570)

时间:2019-11-28 22:39:59

标签: java spring swagger-ui swagger-2.0

问题/方案

我有一个带有SpringBoot 1.4.7.RELEASE的基本REST API项目,并且我正在使用springfox / swagger作为文档。

我们几年前开始使用

io.springfox:springfox-swagger2:2.9.0
io.springfox:springfox-swagger-ui:2.9.0

每天,我们都会用 / dist 文件夹替换 springfox-swagger-ui 并应用一些自定义设置。

到目前为止,一切都很好。

现在,我正在 @RestController 中对相同的 endpoint / HTTP动词执行方法重载,而Swagger-UI并没有真正支持这种方法。

我的@RestController如下所示:

@GetMapping("/people")
public ResponseEntity<List<PeopleDTO>> getAllPeople(Pageable pageable){...}

@GetMapping(value="/people", params={"keys", "values"})
public ResponseEntity<List<PeopleDTO>> getPerson(@ApiIgnore @RequestParam MultiValueMap<String, String> pk){...}

附带说明:相信我,我知道这根本不是RESTfull,但是我正在处理带有复合键的遗留系统,..嗯,我的意思是Swagger UI。

好吧,通过 GetMapping.params 并在我的 Docket 上启用标志 enableUrlTemplating ,它确实可以正常工作,并且端点在ui中可见:

v2/people{?page,size} getAllPeople
v2/people{?keys,values} getPerson

即使可以通过cURL执行这两种方法,但在使用Swagger-Ui时仍会收到404,因为提交之前并未从URL中删除密钥。

http://localhost:8081/api/v2/people%7B?keys%2Cvalues%7D=&keys=keyOne&values=valueOne

问题

我知道

io.springfox.ui:springfox-swagger-ui-rfc6570:1.0.0

我已经在我的项目中尝试过了,效果很好。

但是, springfox-swagger-ui-rfc6570 使用的是swagger-ui 2.2.6 ,该堆栈与 springfox-swagger-ui:2.9非常不同。 0 ,它使用swagger-ui 3.13.6

我正在寻找有关如何继续在swagger-ui 3.13.6中应用相同的“ rfc6570”更改的建议,或者可能是其他一些方法可以帮助我记录此非常规业务要求并保持我的swagger-ui自定义。 / p>

0 个答案:

没有答案