REST API资源命名模式

时间:2016-02-05 04:01:00

标签: rest

我们的项目讨论了Rest API的URI模式。我们从每个产品中获得90天的费率资源,此API用于为产品提供不同日期的费率资源。

根据我的理解,常见的模式是将“days”设置为“rate”资源的查询参数:

{
  "uri": "/api/products/{:id}/rates?days={:days}"
}

但是我们团队的后端开发人员提供的URI如下:

{
  "uri": "/api/products/{:id}/rates/{:days}-days"
}

我不确定最后一个是否反模式,有什么想法?

2 个答案:

答案 0 :(得分:0)

AFAIK,它不是一种模式。

一个常见的约定是对可选参数使用查询参数,对强制参数使用路径参数。在您的情况下,如果天是可选的,您可以使用查询参数。但如果您在使用路径参数时使用路径参数,则不是反模式。

SO可能会有所帮助。

答案 1 :(得分:0)

这两个URI结构看起来都很好,我实际上更喜欢第二个,它不是查询参数。

但是,REST根本没有规定任何URI结构。它说的是你不应该将这些URI硬编码到客户端代码中。应该可以发现/可浏览的资源。在这种特殊情况下,产品应该具有引用到“rate”资源。

大多数情况下,如果资源数量有限,可以立即引用它们。我不明白产品有多少“速率”资源,但如果它是已知数量,只需链接产品下的所有资源。

如果子资源的数量未知或动态,则提供标准的查询方式(如HTML中的表单)。服务器应该能够在不实际破坏任何客户端的情况下更改URI结构。