如何使用Swagger代码生成在同一个api端点上处理多个方法?

时间:2019-03-19 11:08:31

标签: angular rest spring-boot swagger

我目前正在使用Swagger在前端(角度)生成服务。该服务使我可以调用Spring Boot Rest API。

Spring Boot中的示例:

@PostMapping(value = "/", headers = {"ROLE-ORIGIN=ADMIN"})
public StatusDTO saveUser(@RequestBody AdminDTO dto)

@PostMapping(value = "/", headers = {"ROLE-ORIGIN=PUBLIC"})
public StatusDTO saveUser(@RequestBody PublicDTO dto) 

我希望Swagger生成两种与这两种实现相对应的方法。

赞:

public saveUserUsingPOST1(dto: AdminDTO, ROLE_ORIGIN: string, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {

public saveUserUsingPOST2(dto: PublicDTO, ROLE_ORIGIN: string, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {

但是昂首阔步地选择只生成这两个之一。因此,我不能使用另一个。

我这样做是为了尊重Rest的良好做法,为同一资源提供一个api端点。

编辑:导致我执行此操作的帖子: Restful : multiple cases for a same ressource (same api end point ?)

1 个答案:

答案 0 :(得分:2)

您要问的基本上是不可能的,因为您要将两种不同的方法映射到同一URI,这就是为什么swagger无法确定将在文档中使用哪种方法。也许您可以添加显式的swagger注释来生成文档,但在Spring控制器上的同一端点上不应有两种不同的方法。

此外,您的方法具有不同的请求主体和标头,因此它们不是相同的端点,并且不能将它们映射到相同的URI,至少不能以RESTful方式映射,这就是为什么大张旗鼓地选择其中一个而忽略另一个一。 甚至没有向每个方法中添加端点挥杆信息,也会导致在挥动生成的文档上有两个端点。