gpt4 book ai didi

java - Restful header 中的 API 版本控制服务

转载 作者:行者123 更新时间:2023-11-29 05:03:33 25 4
gpt4 key购买 nike

全部!

我正在检查 Rest Header 中版本 API 的服务,我使用 Java 语言和 Jersey 框架。所有请求(POST、GET、PUT 和 DELETE)中没有 URI 唯一 header 。请参阅下面的示例。

例子:获取/员工 header - 版本:1.0 <- 这是我需要在版本服务中实现的 header 。

有人有提示或将有关它的文章和教程传给我。

非常感谢。

最佳答案

在 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 header 来指定您想要给定的媒体类型:

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) {
...

我们通常将媒体类型提取到公共(public)静态中,以便我们可以从我们的测试客户端访问和使用它们。请务必使用 JerseyTest在单元测试中测试您的网络服务。

关于java - Restful header 中的 API 版本控制服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31192280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com