是否推荐:通过POST HTTP Request发送JSON正文,无需修改



是否建议通过POST HTTP请求发送JSON正文,该请求不修改任何内容?

根据下面的链接,不建议Get请求有body。因此,另一种方法就是上面的方法。

带请求正文的HTTP GET

的例子:获取用户列表,或基于参数的任何相关内容。

Http GET example.com/users
Body
{
name:"John",
age:1,
... long list of parameters
}

是否建议通过POST HTTP请求发送JSON体,该请求不修改任何内容?

规则是POST是默认的;除非有更好的办法,否则应该用它。

对于带有"effective read only"语义,你想使用GET而不是POST…如果它工作。挑战可能是那些请求目标(又名:URI)变得足够长以至于您开始遇到414个URI过长响应的情况。如果您的标识符足够长,以至于通用组件拒绝传递请求,那么它不是更好的方法,您可以返回到POST。

源服务器不应该依赖私有协议来接收内容,因为HTTP通信的参与者通常不知道请求链中的中介。(HTTP语义,9.3.1)

换句话说,引入一个私有协议来包含GET请求中的内容,这就放弃了互操作,如果你想要"网络规模"的话。——并不是一个成功的交易。所以GET-with-a-body不是更好,你会退回到POST。

HTTP工作组一直在为一个新的"有效-只读-带正文"的语义工作。方法标记,对于需要在主体中包含一堆信息(因为它太长而无法将其编码为URI)的请求,它可能是另一种选择。但是我们今天没有一个标准,这意味着它不是更好的东西,你回到POST。