版本 REST URI 的最佳方式是什么?目前我们在 URI 本身中有一个版本 #,即。
http://example.com/users/v4/1234/
此表示的版本 4。
版本是否属于查询字符串?即。
http://example.com/users/1234?version=4
或者最好通过其他方式完成版本控制?
最佳答案
不要对 URL 进行版本控制,因为...
- 您破坏了永久链接
- 网址更改会像疾病一样通过您的界面传播。您如何处理未更改但指向已更改的表示?如果更改网址,就会破坏旧客户端。如果您留下该网址,您的新客户可能无法工作。
- 版本控制媒体类型是一种更加灵活的解决方案。
假设您的资源返回 application/vnd.yourcompany.user+xml 的某些变体,您所需要做的就是创建对新 application/vnd.yourcompany.userV2+xml 媒体类型的支持,并通过内容协商的魔力您的 v1 和 v2 客户端可以和平共处。
在 RESTful 接口(interface)中,最接近契约的是客户端和服务器之间交换的媒体类型的定义。
客户端用于与服务器交互的 URL 应由嵌入到先前检索到的表示中的服务器提供。客户端需要知道的唯一 URL 是接口(interface)的根 URL。仅当您在客户端构建 url 时,向 url 添加版本号才有值(value),而您不应该使用 RESTful 接口(interface)来执行此操作。
如果您需要对媒体类型进行更改,这会破坏现有客户,那么请创建一个新客户并保留您的网址!
对于那些目前说如果我使用 application/xml 和 application/json 作为媒体类型的读者来说这是没有意义的。我们应该如何对它们进行版本控制?你不。这些媒体类型对于 RESTful 接口(interface)来说几乎毫无用处,除非您使用代码下载来解析它们,此时版本控制是一个没有实际意义的问题。
关于rest - 如何对 REST URI 进行版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/972226/