RESTful API:为什么不对集合和项目只使用一个基本URL?

时间:2013-11-30 03:31:39

标签: api rest

我和朋友讨论RESTful API,他问为什么它为集合和项目(/dogs/dogs/1234)使用两个基本URL而不是像其他所有查询参数一样的单个URL( /dogs/dogs?id=1234)。

经过进一步的讨论,我意识到我无法提出一个不是基于美学原因的论证(意味着URL看起来更像/ dogs / 1234而不是/ dogs?id = 1234)。

您可以有一个基本URL来处理资源的集合和单个项目,并且看起来很奇怪,有一个特殊情况,您使用非查询参数(/ 1234而不是?id = 1234)引用资源。

这引出了我的问题,是否有一个特定的,非审慎的理由为资源使用两个基本URL而不是RESTful API中的一个?

  • 我考虑过的一件事是像/ dogs / 1 / fleas / 10这样的嵌套资源看起来很尴尬,但仍然可以使用单个基本URL(/ dogs?id = 1& flea_id = 10)

1 个答案:

答案 0 :(得分:1)

URI设计只是REST API中非常小的一部分,尽管你会认为只要花费大量时间来讨论它,它就是REST-ful的唯一内容。身份验证,内容类型,响应代码,方法类型(GET,POST,PUT,DELETE,OPTIONS),发现能力和缓存策略都是需要考虑的重要事项。

但是,在考虑查询字符串是否合适时,首先要确定它们是否能够准确地表示资源的状态而不进行更改。可以使用该URI(可能总是)在该位置识别相同的资源(您的狗)吗?那条狗会以某种方式改变,因为你选择了一个带ID的查询字符串,而不是代表路径中的ID吗?不,它不会,这就是为什么在这种情况下查询字符串就好了。事实上,其中任何一个都可以。