如何使用不同的finder"方法"获取REST资源?

Mar*_*eon 2 rest restful-url

假设您有/公司资源允许客户查找上市公司,并且您希望客户能够通过Ticker,位置,位置和行业查找公司

你会在表单中保留相同的URL:

  • GET/companies/msft
  • GET/companies/usa
  • GET /公司/美国和软件

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

Dar*_*ler 9

怎么样?

GET /Companies?ticker=MSFT

GET /Companies?country=USA

GET /Companies?country=USA&industry=software
Run Code Online (Sandbox Code Playgroud)

重要的是识别资源.该资源是"公司列表".它的媒体类型可以是Atom列表,也可以只是使用UL LI标签的HTML文档.查询参数会影响列表的内容,但从概念上讲,它仍然是"公司列表".

您可以创建一个独特的资源,例如

GET /Companies/USA
Run Code Online (Sandbox Code Playgroud)

但你真的需要吗?你打算邮寄到/ Companies/USA吗?你要删除/ Companies/USA吗?如果您的应用程序不需要能够对这些特定的公司集合执行其他操作,那么为什么还要将它们建模为不同的资源呢?

作为本次讨论的旁注,我希望在访问单个实体与列表的资源时更清楚地区分.即

GET /Companies/USA

GET /Company/MSFT
Run Code Online (Sandbox Code Playgroud)

我意识到这不是一些流行的Web框架的工作方式,但我发现它是一个有用的区别.