Как обрабатывать несколько методов в одной конечной точке API с помощью генерации кода Swagger? - PullRequest
0 голосов
/ 19 марта 2019

В настоящее время я использую 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: несколько случаев для одного и того же ресурса (одна и та же конечная точка API?)

1 Ответ

2 голосов
/ 19 марта 2019

То, что вы спрашиваете, в принципе невозможно, потому что вы сопоставляете два разных метода с одним и тем же URI, поэтому swagger не может решить, какой из них будет использоваться в вашей документации.может быть, вы могли бы добавить явные аннотации swagger для генерации документации, но у вас не должно быть двух разных методов для одной и той же конечной точки на вашем контроллере пружины.

Кроме того, ваши методы имеют разные тела запросов и заголовки, поэтому они не являются одной и той же конечной точкой и не могут быть сопоставлены с одним и тем же URI, по крайней мере, не в режиме RESTful, поэтому swagger выбирает один из них иигнорируя другой.Даже если вы не добавите информацию о конечной точке сваггера в каждый метод, вы получите две конечные точки в сгенерированном вами документе сваггера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...