3
A
回答
1
可选参数往往更容易放入查询字符串中。
如果你想返回一个404错误,当参数值不对应一个现有的资源,那么我会倾向于一个路径段参数。例如/ customer/232其中232不是有效的客户ID。
如果你想返回一个空列表,那么当没有找到该参数时,查询字符串参数。例如/ contacts?name = dave
如果一个参数影响整个URI结构,那么使用一个路径语言参数/en/document/foo.txt与/document/foo.txt?language=en
如果唯一标识符位于路径而不是查询参数中。
路径是友好的搜索引擎/浏览器历史/导航。
0
当我开始创建一个API时,我正在考虑同样的问题。
Video from apigee。帮助我很多。
简而言之,当您决定构建一个API时,您应该决定哪个实体是独立的,哪个实体只与某人有关。
例如,如果您有创建/更新/删除操作的订单的特定端点,则可以使用第二种方法/order/?user=3
。
另一种方式,如果订单只有一个表示,取决于用户,他们没有任何特殊的交互,那么你可以先行。
0
REST的整点是资源。你应该尝试尽可能地将它们映射到你将要得到的实际要求。我绝对不会把它称为order_list
,因为这看起来像一个动作(你正在“列出”订单,而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
相关问题
- 1. 我应该从哪里开始和结束while循环这里
- 2. Socket.Receive - 结束在哪里?
- 3. omniauth.rb应该放在哪里?
- 4. beans.xml应该放在哪里?
- 5. 应该在哪里工作?
- 6. gradle.jar应该放在哪里?
- 7. startup.m应该在哪里?
- 8. ViewModels应该放在哪里?
- 9. Python:if-endif-statement在哪里结束?
- 10. 在哪里结束For循环
- 11. 这个`else`语句在哪里结束?
- 12. classpath在哪里结束并开始?
- 13. 我应该在哪里调用第三方Rest API
- 14. 这个REST API的参数值应该在哪里?为什么?
- 15. 我应该在哪里放woocommerce rest api库文件
- 16. 我应该在哪里为MongoDB添加--rest选项?
- 17. 哪些代码应该去哪里在MVC结构
- 18. 我应该在哪里为routes.rb定义一个约束?
- 19. Django Rest框架在哪里响应400
- 20. 应该在哪里应用AsNoTracking?
- 21. 主题结束和应用程序在哪里开始?
- 22. Android.mk应该是哪里?
- 23. msvcp90d.dll应该来自哪里?
- 24. 我应该去哪里?
- 25. 哪里应该保留crossdomain.xml
- 26. Django查询 - 哪里开始=结束
- 27. 我应该在哪里放置在FBConnect
- 28. 我应该在哪里放置在phabricator
- 29. 我应该在哪里在Xcode
- 30. 库在哪里应该在Rails 3中?