Сохранить тот же URL-адрес, но изменить контракт в Spring Boot REST Open API 3?
Я использую Spring Boot and REST and Open API 3
реализация. В этом примереv1
В группе есть реализация List - все данные попадут в List, в v2
В группе реализована пагинация - все данные будут приходить в виде страниц.
Что касается потребителя, мы не хотим изменять URL-адрес конечной точки, чтобы он был потребителем.
Конечная точка, которая возвращает список.
@GetMapping(value = "/contacts", headers = {"Accept-version=v1"})
public ResponseEntity<List<Contact>> findAll() {
List<Contact> contacts = contactService.findContactList();
return new ResponseEntity<>(contacts, HttpStatus.OK);
}
Конечная точка с разбивкой на страницы
@GetMapping(value = "/contacts", headers = {"Accept-version=v2"})
public ResponseEntity<List<Contact>> findAll(Pageable pageable) {
Page<Contact> contactPages = contactService.findContactPageable(pageable);
return new ResponseEntity<>(contactPages, HttpStatus.OK);
}
Я хочу, чтобы конечная точка V1 отображалась в GroupedOpenApi
и конечная точка v2, которая будет отображаться в GroupedOpenApi2
. Какие-либо предложения?
1 ответ
Решение
Предположим, вы поместили две конечные точки в разные пакеты, а затем использовали следующее определение GroupedOpenApi:
@Bean
public GroupedOpenApi groupOpenApiV1() {
return GroupedOpenApi.builder()
.setGroup("v1")
.packagesToScan("test.org.springdoc.api.v1")
.build();
}
@Bean
public GroupedOpenApi groupOpenApiV2() {
return GroupedOpenApi.builder()
.setGroup("v2")
.packagesToScan("test.org.springdoc.api.v2")
.build();
}