当前位置:  开发笔记 > 程序员 > 正文

响应幂等HTTP POST请求

如何解决《响应幂等HTTPPOST请求》经验,为你挑选了1个好方法。

我们的RESTful API的一部分将允许用户注册带有序列号的项目.由于序列号不是全局唯一的,因此不能用作资源的标识符,因此我们将对父资源使用POST来生成标识符,例如

POST /my/items


在项目尚未注册的情况下,HTTP语义被很好地定义.我们返回一个Location标头,并将注册的项目作为实体主体,例如

HTTP 201 Created
Location: /my/items/1234    


但是,在项目已经注册的情况下,API应该是幂等的并返回先前注册的项目而不创建新项目.我最好的猜测是,它应该返回200 OK状态代码,并使用Content-Location标头指示项目实际来自哪里,例如

HTTP 200 OK
Content-Location: /my/items/1234    


这看起来合情合理吗?我不完全清楚位置或内容位置是否更适合第二种情况.



1> manuel aldan..:

我最近有类似的要求.对于幂等运算,PUT是最好的方法.你是对的,外部id和内部id不匹配.我通过为外部id目标创建专用资源来解决它:

PUT /api-user/{username}/items/{serialNumber}

在内部我将其解析为CREATE,以防我没有'username'和'ABCDEF'序列号或UPDATE的项目.

如果它是CREATE,我返回201以获得UPDATE 200.此外,返回的有效负载包含本地ID和外部序列号,就像您在有效负载中建议的那样.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有