REST : GET 但有一个 requestBody

REST : GET but with a requestBody

我正在编写一个将提取数据的端点。我的问题是,客户端请求需要将(非常复杂的)对象列表以及其他复杂数据传递给我的点。

整个事情看起来很复杂,可以通过参数传递。 我还应该使用 GET 吗?我可以用 requestBody 来做吗?或者我可以用响应主体做一个 POST 吗? 我的端点仍然需要遵守 REST

我需要传递的数据: {id :"anUuid", 评论:"some very long text sometime more than 1000 char", dataComputedByOtherServer:[{id:"anUuid",stuff:{"a lot of other stuff"}}]

}

响应正文: { //allong 以及通常的 REST 响应 http 代码和其他错误消息 有效载荷:{ moreComplexData:[{id:"anUuid",stuff:{"a lot of other stuff"}}] } }

HTTP GET 没有正文负载 - 您需要使用 POST(或 PUT)根据需要发送它。

A payload within a GET request message has no defined semantics -- https://www.rfc-editor.org/rfc/rfc7231#section-4.3.1

所以GET越界了

从长远来看,想要的方法最终可能是SEARCH;见 https://github.com/httpwg/http-extensions/issues/943

While POST with the header defined in #942 would help, POST is still an unsafe method that poorly reflects the safe, idempotent semantics of search-like operations. I therefore argue that a a SEARCH method is needed to have a safe, idempotent method with explicit caching support, in opposition to POST which explicitly is not cacheable.

但到 2019 年我们还没有做到这一点:SEARCH 的语义仍然由 WebDAV specification 定义,它们并不完全代表您想要的意思。