我正在从事一个使用Micro-Services Architecture的项目。
有两个服务:
- 用户:与用户有关的所有事物都来这里。
- OMS:与订单有关的所有事物来这里。
我需要根据以下过滤器提供订单:
- 通过用户ID
- 按日期
- 按状态
- 通过用户电话号码
- 上面的混合
所以我创建了一个API
path/orders?date=12/11/2016&status=delivered&phone=1111111111
现在,我需要通过用户ID为用户提供订单。因此,哪个是良好的休息设计:
- 在现有api中添加用户ID,例如
path/orders?user_id=1
- 创建一个单独的API路径
user/{user_id}/orders
您的两个选项都可以。但是有不同的语义。
path/orders?user_id=1
这是通过订单抬起头来的。例如,订单可能会抬头进行一些统计分析。订单可以通过不同的参数过滤,用户ID是其中之一。为此(当订单是主要利益时)上述URI策略是可以的。
现在,您可能需要查找用户并查看其订单。也许对他们的订购习惯进行一些分析。在这里,您需要用户信息及其订单。这是您的第二个URI计划更好
user/{user_id}/orders
这些是用户属于的订单。因此,这是A 关系。这是该URI方案更好的地方。
因此,拥有这两个选项都没有错。您只需要遵循应使用何时使用的语义。