我和一位朋友讨论了RESTful API,他问为什么它使用两个基本URL来处理集合和项(/dogs和/dogs/1234),而不是像其他所有东西(/dogs和/dogs?id=1234)一样使用带有查询参数的单个URL。
经过进一步的讨论,我意识到我无法提出一个不是基于美学原因的论点(这意味着URL看起来更像//dogs?id=1234/1234而不是)。
您可以有一个基本URL,它同时处理资源的集合和单个项,而且奇怪的是,有一种特殊情况,您使用非查询参数(/1234而不是?id=1234)来引用资源。
这让我不禁要问,是否有一个特定的、非受人尊敬的理由可以将两个基本URL用于资源而不是RESTful API中的一个?
发布于 2013-11-30 04:13:53
URI设计只是REST的一个非常小的部分,但考虑到花费的时间,您可能会认为它是REST的唯一一部分。身份验证、内容类型、响应代码、方法类型(GET、POST、PUT、DELETE、选项)、发现能力和缓存策略是更重要的考虑因素。
但是,当考虑查询字符串是否合适时,首先确定它们是否能够在不改变资源状态的情况下准确地表示资源的状态。同一资源(您的狗)是否可以使用该URI (想必总是如此)在该位置识别?因为您选择了一个带有ID的查询字符串,而不是表示路径中的ID,该狗会以某种方式改变吗?不,它不会,这就是为什么查询字符串在本例中是很好的。事实上,这两种方法都可以。
https://stackoverflow.com/questions/20296194
复制相似问题