小编Dee*_*h M的帖子

处理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注释定义资源类的方法,例如,在该包的ProductsResource类中单独包含v1和v2的包,定义

    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 {...}
Run Code Online (Sandbox Code Playgroud)

然后有基于版本的实现逻辑.这种方法的问题是当我们只从api集合中改变一个特定的资源api时,我们也必须将其他类复制到v2包中.我们能避免吗?

怎么写自定义注释说@Version并拥有它支持的版本的值?现在无论是v1还是v2,两个请求都将转到相同的资源类.

比如说

    package com.abc.api.rest.products;
    @Path("/rest/{version: [0-9]+}/products")
    @Version(1,2)
    public class ProductsResource {...}
Run Code Online (Sandbox Code Playgroud)

更新:

Jarrod有一个API版本控制建议来处理标题中的版本.这也是一种方法,但我期待在遵循基于URI的版本控制时使用最佳实践

java rest jax-rs resteasy

45
推荐指数
2
解决办法
2万
查看次数

解释这个动态编程攀爬n阶梯代码

问题是

"你正在爬楼梯.每次你可以做一步或两步.楼梯有n个台阶.你有多少不同的方式可以爬楼梯?"

以下是此问题的代码解决方案,但我无法理解它.任何人都可以解释我

int stairs(int n) {
  if (n == 0) return 0;
  int a = 1;
  int b = 1;
  for (int i = 1; i < n; i++) {
    int c = a;
    a = b;
    b += c;
  }
  return b;
 }
Run Code Online (Sandbox Code Playgroud)

谢谢,

algorithm dynamic-programming

13
推荐指数
1
解决办法
8397
查看次数

Python中的Python itertools循环函数

Python有itertools库,它允许无限循环一个项目列表.

cycle('ABCD') --> A B C D A B C D ...
Run Code Online (Sandbox Code Playgroud)

如何在java中实现相同但是对于数组?例如:

int[] a = { 1, 2, 3, 4};
cycle(a) = 1, 2, 3, 4, 1, 2, 3, 4 ....
Run Code Online (Sandbox Code Playgroud)

java loops

1
推荐指数
1
解决办法
233
查看次数

标签 统计

java ×2

algorithm ×1

dynamic-programming ×1

jax-rs ×1

loops ×1

rest ×1

resteasy ×1