使用Crnk或Katharsis的多个API版本

时间:2018-11-09 03:25:11

标签: spring-boot json-api katharsis crnk

我们正在评估crnksince Katharsis is dead)以实现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进行版本控制。此外,正如我今天早些时候尝试的那样,我最终创建了所有资源和存储库的副本,这些副本造成了bean冲突和其他问题。

有人找到了一种干净的方法吗?还是我们需要对不同的API版本使用单独的二进制文件?

感谢您的时间!

约翰

0 个答案:

没有答案