2016-02-05 73 views
1

我们的项目讨论了Rest API的URI模式。我们有来自每个产品的90天费率资源,这个API是为产品提供不同日期的费率资源。REST API资源命名模式

常见图案,从我的理解,就是将“天”作为查询参数的“速度”资源:

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

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

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

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

回答

0

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

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

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

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

+0

嗨@罗伯特,谢谢你的回答。资源的数量是有限的,我同意如果资源是动态的,就区分这两种资源。 –

0

AFAIK,它不是anit模式。

一个常见的惯例是使用可选参数的查询参数和强制参数的路径参数。在你的情况下,如果天是可选的,你可以使用查询参数。但是,如果您在使用路径参数时它不是反模式。

这个SO可能有帮助。