我们正在评估crnk(since 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版本使用单独的二进制文件?
感谢您的时间!
约翰