我有一个POST端点,可以在数据库中创建/插入新记录。
POST / payment / cards将在DB中添加/保存支付卡,并在200 OK时返回添加的卡信息作为响应。现在,如果我们再次调用相同的终点,它会更新数据库中现有的支付卡,这不应该发生。
所以,如果支付卡已经存在,我正在添加逻辑检查,以便我们不会更新它。
此方案中要返回的HTTP状态是什么?
答案 0 :(得分:1)
对于POST响应,如果创建了新记录,则使用201,否则使用200或409而不是。我认为它是409冲突,这是最合适的,但是,当然在野外很少见到:
由于与资源的当前状态发生冲突,无法完成请求。此代码仅在预期用户可能能够解决冲突并重新提交请求的情况下才允许。响应主体应该包含足够的信息供用户识别冲突的来源。理想情况下,响应实体将包含足够的信息供用户或用户代理解决问题;但是,这可能是不可能的,也不是必需的。
最有可能发生冲突以响应PUT请求。例如,如果正在使用版本控制并且包含PUT的实体更改为与早期(第三方)请求所产生的资源冲突的资源,则服务器可能会使用409响应来指示它无法完成请求。在这种情况下,响应实体可能包含由响应Content-Type定义的格式的两个版本之间的差异列表。