所有!
我在Rest Header中查看Version API的服务,我使用的是Java语言和Jersey框架。请求中没有唯一的URI头(POST,GET,PUT和DELETE)。请参阅下面的示例。
实施例: GET /员工 标题 - 版本:1.0< - 这是我需要在版本服务中实现的标题。
有人有提示或传给我关于它的文章和教程。
非常感谢。
答案 0 :(得分:3)
在REST的面向资源的架构风格下,您将对资源本身而不是服务进行版本控制。您可以使用自定义的版本化媒体类型来实现此功能。例如,使用Java和JAX-RS可能看起来像这样:
@Path("/resource/account/{id}")
@GET
@Produces("application/vnd.mycompany.account-1.0+json")
public Response getAccount(@PathParam("id") String id) {
...
注意@Produces注释中媒体类型字符串中的版本号。
然后,在您的客户端发出请求时,使用Accept标头指定您想要给定的媒体类型:
Accept: application/vnd.mycompany.account-1.0+json
换句话说,不要这样做:
@Path("/resource/account/v1/{id}")
如果您想支持多个版本,您的服务类可能如下所示:
@Path("/resource/account")
public class AccountWebService {
@GET
@Path("/{id}")
@Produces("application/vnd.mycompany.account-1.0+json")
public Response getAccount(@PathParam("id") String id) {
...
@GET
@Path("/{id}")
@Produces("application/vnd.mycompany.account-2.0+json")
public Response getAccountV2(@PathParam("id") String id) {
...
我们通常将媒体类型拉入公共静态,以便我们可以从我们的测试客户端访问和使用它们。请务必使用JerseyTest来测试您的网络服务,作为单元测试的一部分。