2

假设您有一个 /companies 资源,允许客户查找上市公司,并且您希望客户能够按代码、位置、位置和行业查找公司

您是否会在表单中保留相同的 URL:

  • 获取/公司/msft
  • 获取/公司/美国
  • 获取/公司/美国&软件

这似乎不对。有任何想法吗?

4

3 回答 3

9

怎么样?

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 框架的工作方式,但我发现它是一个有用的区别。

于 2009-10-25T21:40:01.243 回答
0

您可以接受其中任何一个,但随后返回一个 Location: 指向规范地址的标头(可能是 GET /companies/msft)。

于 2009-10-25T21:16:43.050 回答
0

你只有一家公司,但有多种方式可以到达,所以我可能会定义 /companies/[unique-name],然后是 /companies/byticker/msft 和 /companies/bylocation/usa 等各种东西。

于 2009-10-25T21:18:01.997 回答