假设有“USERS AND ORDERS”
针对特定用户的订单列表
你可以做到
/user/3/order_list
/order/?user=3
首选哪一个?为什么?
答案 0 :(得分:1)
可选参数往往更容易放入查询字符串中。
如果要在参数值与现有资源不对应时返回404错误,那么我会倾向于路径段参数。例如/ customer / 232其中232不是有效的客户ID。
但是,如果要返回空列表,则在未找到参数时查询字符串参数。例如/联系人?名称=戴夫
如果参数影响整个URI结构,则使用路径,例如语言参数/en/document/foo.txt与/document/foo.txt?language=en
如果唯一标识符在路径中而不是查询参数。
路径对搜索引擎/浏览器历史记录/导航非常友好。
答案 1 :(得分:0)
当我开始创建API时,我正在考虑同样的问题 Video from apigee。帮助了我很多。
简而言之,当您决定构建API时,您应该决定哪个实体是独立的,哪个实体只与某人有关。
例如,如果您具有创建/更新/删除操作的订单的特定端点,则可以使用第二种方法/order/?user=3
。
换句话说,如果订单只有一个表示,取决于用户,他们没有任何特殊的互动,那么你可以先接近。
答案 2 :(得分:0)
REST的重点是资源。您应该尽可能地将它们映射到您将要获得的实际请求。我绝对不会称之为order_list
,因为这看起来像是一个动作(您已经#34;列出"订单,而GET
应该足以告诉您你得到了什么东西)
所以,首先我认为您应该/users
而不是/user
,然后将其视为树结构:
所以,我会去寻找类似的东西:
yourdomain.com/my/users
yourdomain.com/my/users/3
yourdomain.com/my/users/3/orders
yourdomain.com/my/users/3/orders/5