gpt4 book ai didi

rest - 返回带有 REST DELETE 的正文

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:08:48 24 4
gpt4 key购买 nike

我正在实现用于设置和检索资源的 REST API。

我最初的实现非常简单:

1) PUT - 路径指定要存储的{id},请求体是要存储的JSON对象,成功时返回200响应

2) GET - 路径指定要检索的 {id},请求主体为空,返回 200 响应和主体中存储的 JSON 对象

3) DELETE - path specifies {id} to delete, request body is empty, returns a 200 and an empty body (yes, probably should be a 204)

然而,一个比我更有影响力的上游方要求我们对 JSON 对象进行破坏性检索。他们坚持不希望进行单独的 GET 和 DELETE 调用(即,这与试图确保原子调用以消除竞争条件的人无关)。

对我来说,这似乎违反了 RESTful 服务的精神,当我尝试记录此更改时,API 文档具有明确的“代码味道”,因为在尝试清楚地记录 GET/DELETE 方法时感觉很尴尬.

显然,我可以实现任何有效的方法,但是是否存在关于破坏性读取的完善约定?确实存在确实需要原子调用的情况?

最佳答案

他们所要求的与 REST 无关,但与 HTTP RFC (#7231) 相悖。

If a DELETE method is successfully applied, the origin server SHOULD send a 202 (Accepted) status code if the action will likely succeed but has not yet been enacted, a 204 (No Content) status code if the action has been enacted and no further information is to be supplied, or a 200 (OK) status code if the action has been enacted and the response message includes a representation describing the status.

这很清楚。您可以返回 200 (Ok),但响应中的实体应该是状态对象,而不是已删除的对象。当然,无论如何,您可能会被欺负而这样做,办公室政治就是这样。向他们询问您需要违反 RFC 的经过验证的技术原因。不要接受人为的“太贵”的说法 - 让他们提供实际的测试用例来证明存在问题。

据我所知,原子读取/删除操作没有定义的语义。如果没有更多信息,将很难向您提供如何继续操作的建议,这可能超出了本网站的范围。

关于rest - 返回带有 REST DELETE 的正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25173109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com