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

您可以在表单中保留相同的 URL:

  • 获取/公司/微软
  • 获取/公司/美国
  • GET /公司/美国&软件

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

有帮助吗?

解决方案

怎么样?

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

其他提示

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

您只有一家公司,但有多种访问方式,因此我可能会定义 /companies/[unique-name],然后定义各种内容,例如 /companies/byticker/msft 和 /companies/bylocation/usa 等。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top