我目前正在使用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 ?)
答案 0 :(得分:2)
您要问的基本上是不可能的,因为您要将两种不同的方法映射到同一URI,这就是为什么swagger无法确定将在文档中使用哪种方法。也许您可以添加显式的swagger注释来生成文档,但在Spring控制器上的同一端点上不应有两种不同的方法。
此外,您的方法具有不同的请求主体和标头,因此它们不是相同的端点,并且不能将它们映射到相同的URI,至少不能以RESTful方式映射,这就是为什么大张旗鼓地选择其中一个而忽略另一个一。 甚至没有向每个方法中添加端点挥杆信息,也会导致在挥动生成的文档上有两个端点。