Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在RESTful API中处理自动生成的ID?_Api_Rest - Fatal编程技术网

如何在RESTful API中处理自动生成的ID?

如何在RESTful API中处理自动生成的ID?,api,rest,Api,Rest,当设计一个RESTful API使用一个使用自动生成ID的数据存储时(除此之外没有任何可靠的唯一值),我如何指定一个添加(PUT)操作 例如: GET /widgets/ 将返回所有小部件的列表 GET /widgets/123 将返回特定小部件的信息 POST /widgets/123 将更新一个小部件 但是添加小部件的URL是什么 PUT /widgets/??? i、 例如,在添加ID之前,我(作为客户机)不知道该ID。REST约定通常指定创建POST和更新PUT。这是因为PUT与

当设计一个RESTful API使用一个使用自动生成ID的数据存储时(除此之外没有任何可靠的唯一值),我如何指定一个添加(PUT)操作

例如:

GET /widgets/
将返回所有小部件的列表

GET /widgets/123
将返回特定小部件的信息

POST /widgets/123
将更新一个小部件

但是添加小部件的URL是什么

PUT /widgets/???

i、 例如,在添加ID之前,我(作为客户机)不知道该ID。

REST约定通常指定创建POST和更新PUT。这是因为PUT与GET和DELETE是幂等方法。这意味着它们可以运行任意次数,并且服务器的状态应该相同。POST是一个非幂等操作,这意味着每次运行该操作后,服务器状态不能保证相同

通常,您会发布到
/widgets
url以添加项目


有关更多详细信息,请参阅。

好吧,多基,我搞错了。我肯定我读的那篇文章说的是相反的,但是有很多错误信息。@Stumith:有大量错误信息,但是给家长发帖子是正确的(ID分配不是幂等的)它应该返回一个指向刚刚创建的资源的链接/重定向。@Stumsmith您可以使用PUT或POST创建资源,PUT的限制是您需要知道将其放置在何处,因此在您的情况下,您需要提前知道ID。您还可以使用PUT、POST或PATCH更新资源,这取决于最有意义的内容,这就是为什么人们在尝试将HTTP方法映射到CRUD时会感到困惑的原因。特定的POST操作可能是幂等的,也可能不是幂等的。关键是,中介机构不知道。我指出这一点的唯一原因是,我看到人们评论说,因为服务器没有更新,所以无法使用POST,这显然是不正确的。