0

我正在考虑一种在 URL 中有版本的 RESTful API 中路由请求的好方法,例如

api.example.com/v2/resource
api.example.com/v3/resource

具体来说,如何将 URL 中的这些主要版本映射到应用程序布局?看起来像这样的东西?

application/v2/models
application/v2/controllers
....
application/v3/models
application/v3/controllers
.....

我所知道的最接近的 PHP 实现是使用 Zend Framework 1.x 中的模块,其中结构看起来像这样

application/modules/v2/models
application/modules/v2/controllers
....
application/modules/v3/models
application/modules/v3/controllers
.....

但是这些版本并不是真正的模块,所以这感觉有点不对劲。我想知道是否有更好的想法?

4

1 回答 1

1

您应该从 URL 中删除 API 版本,而是使用 HTTPAccept标头,例如

HTTP/1.0 GET /resource
Accept: application/vnd.foo.bar.v1+json

支持 API 版本 2 的客户端将使用:

HTTP/1.0 GET /resource
Accept: application/vnd.foo.bar.v2+json

有关 REST API 设计的更多想法,请参阅设计 HTTP 接口和 RESTful Web 服务

于 2013-02-19T14:52:29.807 回答