Несколько версий API с использованием Crnk или Katharsis - PullRequest
0 голосов
/ 09 ноября 2018

Мы оцениваем crnk (, поскольку Катарсис мертв ) для реализации json: api. Мы также рассматриваем возможность иметь несколько версий API в одном двоичном файле, чтобы все версии более постоянно поддерживались / сканировались. Наконец, мы выбрали стратегию управления версиями URI, поэтому наши URI будут содержать / v1, / v2 и т. Д. Мы используем Spring Boot 1.5.

В типичных @RestController RESTServices вы можете легко указать пути @RequestMapping, чтобы разрешить несколько версий в URI ...

@Controller
@RequestMapping("/v1")
    @RequestMapping(value = "/customers/{identifier}", method = RequestMethod.GET, produces = "application/json")

@Controller
@RequestMapping("/v2")
    @RequestMapping(value = "/customers/{identifier}", method = RequestMethod.GET, produces = "application/json")

Однако в crnk как это сделать? Я несколько нашел обходной путь, добавив версию API к пути к ресурсу, но это выглядит ужасно неправильно.

@JsonApiResource(type = "customer", resourcePath = "/v1/customers")
public class Customer {

    @JsonApiId
    private long identifier;

Это действительно поставит ресурс клиентов под версию API, но мне кажется, что я создаю версию ресурса, а не API. Более того, когда я попытался сделать это ранее сегодня, я закончил тем, что создал копии всех ресурсов и репозиториев, которые привели к конфликтам бинов и другим проблемам.

Кто-нибудь нашел чистый способ сделать это, или нам нужно будет использовать отдельные двоичные файлы для разных версий API?

Спасибо за ваше время!

John

...