订单管理系统的Rest API设计

时间:2016-11-25 07:32:07

标签: java rest jersey-2.0

我正在开发一个使用微服务架构的项目。

有两项服务:

  1. UserAPI:与用户相关的所有事情都来到这里。
  2. OMS:所有与订单相关的事情都来到这里。
  3. 我需要根据以下过滤条件提供订单:

    1. 按用户ID
    2. 按日期
    3. 按状态
    4. 按用户电话号码
    5. 以上的混合
    6. 所以我创建了一个API

      path/orders?date=12/11/2016&status=delivered&phone=1111111111
      

      现在我需要按用户ID提供用户订单。那么哪个好休息设计:

      1. path/orders?user_id=1
      2. 等现有API的查询参数中添加用户ID
      3. 创建单独的API路径user/{user_id}/orders

1 个答案:

答案 0 :(得分:1)

您的两个选项都可以。但是有不同的语义。

path/orders?user_id=1

这是按订单查询。例如,可以查询订单进行一些统计分析。订单可以通过不同的参数进行过滤,用户ID是其中之一。为此(当订单是主要兴趣时),上述URI策略没问题。

另一方面,您可能想要查找用户并查看他们的订单。也许对他们的订购习惯做一些分析。在这里,您需要用户信息及其订单。这是你的第二个URI方案会更好的地方

user/{user_id}/orders

这些是属于给用户的订单。所以这是关系。这是这种URI方案更好地工作的地方。

所以这两种选择都没有错。您只需要遵循每个应该使用的语义。

相关问题