可能重复:
如何对 REST URI 进行版本控制
我是 REST-ful API 设计的新手,我似乎无法就如何以 REST-ful 风格实现 API 版本控制达成共识。我遇到的可能性包括:
基于 URL(例如
/myApi/version5/someCall
)这种方法对服务器和客户端都很好......但它似乎不是很 REST-ful(url 应该对应于资源,API 版本真的不是资源的一部分)
基于负载的(例如
$.ajax({data:{version:5, ...
)这种方法在兼容性方面效果很好,但是:
A)服务器需要实际解析有效负载以确定版本(这往往会使版本检查逻辑“更深”地比它应该的)
B)再一次,从我所知道的哲学来看,这不是很 REST-ful(据我所知,我发布的数据应该只是我想要创建的资源的数据)
基于标头(例如
Accept application/json;version=5
)这种方法是在此处提出的,我发现它是关于如何制作 REST-ful API 的绝佳资源。但是在这种特殊情况下,我一直遇到问题,因为无论我做什么,我似乎都无法让 jQuery 在标题中发送版本。
现在,我确信如果我尝试,我最终可以解决方法#3 中的 jQuery 问题,但这让我认为我可能会在基于标头的版本控制中走错路;如果我遇到问题,我们 API 的消费者似乎也会遇到问题。
因此,在创建 REST-ful API 时,谁能解释一下哪种版本控制方法:
A) 将与其他技术(浏览器、框架等)一起使用最好的
B) 最忠实地执行“REST-ful”理念
C)是最常见的(这个本身并不重要,但它确实往往是前两个的指标)
换句话说,在 REST-ful API 中处理版本控制的最佳方式是什么?