1

可能重复:
如何对 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 中处理版本控制的最佳方式是什么?

4

2 回答 2

2

解决方案 1 看起来既实用又简单。供您参考 twitter( api.twitter.com/2) 和linkedin ( api.linkedin.com/v1) 使用基于 URL 的版本控制,Google Data( &v=1.0) 使用基于有效负载。我的实践经验是基于 URL 的版本控制。

如果要进行分析,请检查此api 目录

于 2012-09-12T13:50:38.133 回答
1

我强烈建议解决方案 1,它既清晰又简单——不仅 StackOverFlow 也使用它:https ://api.stackexchange.com/2.1/questions?order=desc&sort=activity&site=stackoverflow :)

于 2012-09-12T01:53:52.093 回答