REST API 上下文中集合和存储之间的区别

问题描述 投票:0回答:1

REST API 上下文中集合资源原型和存储资源原型之间的确切区别是什么,我一直在阅读这本名为 REST API 设计规则手册的书,但无法理解两者之间的区别。

我可以理解集合是服务器管理的,商店是客户端管理的,但无法理解它们的含义或如何实现,请用简单的方式并用一些示例进行解释。

rest architecture api-design software-design
1个回答
0
投票

我可以理解集合是服务器管理的,商店是客户端管理的,但无法理解它们的含义

区别在于:谁可以选择新资源的 URI。

遵循集合原型时,您通常会将文档发布到索引资源,服务器将选择新文档资源的拼写。

借用Rails Routing from the Outside In,要上传照片,客户端将向照片索引发送 POST 请求

POST /photos
...

服务器将为新照片选择 URI 并将该位置发送回客户端。 这通常看起来像是为资源生成一个 id,然后在一致的位置构造一个具有该 id 的 URI(例如,使用 URI 模板)

201 Created
Location: /photos/bf0c4e00-7529-4ef0-958c-db6b18a7facc

另一方面,如果您遵循 store archetype,您通常会让客户端选择 URI(同样,通常是允许客户端选择一个 id,然后按照模板所述构造一个 URI)。

客户端随后将通过提供(新的)表示来“更新”其选择的资源

PUT /photos/c3d4eace-9990-4daa-8bfc-7b58ed532298
...
201 Created
Location: /photos/c3d4eace-9990-4daa-8bfc-7b58ed532298

如何实施

实现此目的的一个简单方法是将 URI 空间映射到磁盘上的目录,并将资源表示写入文件中,文件名可以轻松转换为 URI,反之亦然。 因此,您最终可能会将所有

/photos
放入
/var/www/photos
中。

© www.soinside.com 2019 - 2024. All rights reserved.