我正在指定一个带有可以查看、创建、编辑或删除的资源的休息系统。我试图尊重 rest 和 http 方法语义。
如果资源由http://mydomain.org/oid_bar标识,我可以使用以下方法对其进行管理: - PUT 创建或更新此资源 - DELETE 删除此资源 - GET 返回此资源
但是,如果您需要创建一个您还不知道 oid 的新资源,您将如何进行?当您将对象添加到数据库并且主键由数据库自动生成时,这种情况非常常见。就我而言,我的后端是一个数据库。
我想到了一个带有资源http://mydomain.org/next_free_oid的解决方案,它返回下一个空闲 oid 并增加它的值。此资源只会响应 POST 请求。使用返回的 oid,我可以向目标 URL 发送 PUT 请求。
另一种解决方案是向http://mydomain.org/发送 POST 请求。该请求将创建一个具有生成的 oid 的资源并返回该 oid。
先前解决方案的一个变体是将 POST 请求发送到http://mydomain.org/create_object
第三种解决方案是我的首选。但是将 URL 用作服务是否符合 HTTP/REST?
欢迎每条评论。
问候, 米凯尔