Несколько версий API с использованием Crnk или Katharsis
Мы оцениваем crnk ( поскольку Katharsis мертв) для реализации 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?
Спасибо за ваше время!
Джон