Сохранить тот же URL, но изменения контракта в Spring Boot REST Open API 3? - PullRequest
0 голосов
/ 30 января 2020

Я использую Spring Boot and REST and Open API 3 реализацию. В этом примере v1 Group имеет реализацию List - все данные попадут в List, в v2 Group имеет реализацию разбивки на страницы - все данные будут представлены в виде страниц.

Для пользователя мы не хочу изменять конечную точку 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 Ответ

3 голосов
/ 31 января 2020

Предположим, что вы поместили две конечные точки в разные пакеты и затем использовали следующее определение 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...