java接口分层版本控制,java-处理JAX-RS REST API URI版本控制的最佳方法

我首先在stackoverflow中进行了搜索,但找不到与我的问题有关的任何答案。 我所能找到的只是与REST uri设计有关的问题。

我的问题在后端。假设我们有两种不同版本的REST uri

[HTTP://API.ABC.com/rest/V1/products]

[HTTP://API.ABC.com/rest/V2/products]

在后端版本(服务器端代码)上遵循这两种基于版本的api的现有类的正确路由,可管理性和重用的最佳方法是什么?

我想过用不同的@Path注释定义资源类的方法,例如 分别具有v1和v2的程序包,并在该程序包的ProductsResource类中,定义

package com.abc.api.rest.v1.products;

@Path("/rest/v1/products")

public class ProductsResource {...}

package com.abc.api.rest.v2.products;

@Path("/rest/v2/products")

public class ProductsResource {...}

&然后根据版本制定实现逻辑。 这种方法的问题在于,当我们仅从一组api中更改一个特定的资源api时,我们还必须将其他类也复制到v2包中。 我们可以避免吗?

如何编写一个自定义批注说@Version并具有其支持的版本的值? 现在,无论是v1还是v2,两个请求都将转到相同的资源类。

例如说

package com.abc.api.rest.products;

@Path("/rest/{version: [0-9]+}/products")

@Version(1,2)

public class ProductsResource {...}

更新:

Jarrod提出了API版本控制建议,以处理标头中的版本。 这也是做到这一点的一种方法,我期待在遵循基于URI的版本控制时可以使用的最佳实践

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值