假设您有一个 /companies 资源,允许客户查找上市公司,并且您希望客户能够按代码、位置、位置和行业查找公司
您是否会在表单中保留相同的 URL:
- 获取/公司/msft
- 获取/公司/美国
- 获取/公司/美国&软件
这似乎不对。有任何想法吗?
假设您有一个 /companies 资源,允许客户查找上市公司,并且您希望客户能够按代码、位置、位置和行业查找公司
您是否会在表单中保留相同的 URL:
这似乎不对。有任何想法吗?
怎么样?
GET /Companies?ticker=MSFT
GET /Companies?country=USA
GET /Companies?country=USA&industry=software
重要的是识别资源。该资源是“公司列表”。它的媒体类型可以是一个 Atom 列表,或者只是一个使用 UL LI 标签的 HTML 文档。查询参数影响列表的内容,但从概念上讲,它仍然是“公司列表”。
您可以创建一个独特的资源,例如
GET /Companies/USA
但你真的需要吗?你要邮寄到 /Companies/USA 吗?您要删除 /Companies/USA 吗?如果您的应用程序不需要对这些特定公司集执行额外操作的能力,那么为什么还要将它们建模为不同的资源呢?
作为本次讨论的旁注,当我访问作为单个实体与列表的资源时,我喜欢更清楚地区分。IE
GET /Companies/USA
GET /Company/MSFT
我意识到这不是一些流行的 Web 框架的工作方式,但我发现它是一个有用的区别。
您可以接受其中任何一个,但随后返回一个 Location: 指向规范地址的标头(可能是 GET /companies/msft)。
你只有一家公司,但有多种方式可以到达,所以我可能会定义 /companies/[unique-name],然后是 /companies/byticker/msft 和 /companies/bylocation/usa 等各种东西。