我正在开发一个使用微服务架构的项目。
有两项服务:
我需要根据以下过滤条件提供订单:
所以我创建了一个API
path/orders?date=12/11/2016&status=delivered&phone=1111111111
现在我需要按用户ID提供用户订单。那么哪个好休息设计:
path/orders?user_id=1
user/{user_id}/orders
答案 0 :(得分:1)
您的两个选项都可以。但是有不同的语义。
path/orders?user_id=1
这是按订单查询。例如,可以查询订单进行一些统计分析。订单可以通过不同的参数进行过滤,用户ID是其中之一。为此(当订单是主要兴趣时),上述URI策略没问题。
另一方面,您可能想要查找用户并查看他们的订单。也许对他们的订购习惯做一些分析。在这里,您需要用户信息及其订单。这是你的第二个URI方案会更好的地方
user/{user_id}/orders
这些是属于给用户的订单。所以这是关系。这是这种URI方案更好地工作的地方。
所以这两种选择都没有错。您只需要遵循每个应该使用的语义。