GET与空的POST有什么区别?

4
对于我的工作,我正在查看一些JavaScript文件,并发现有一些使用POST的AJAX调用,但没有发送任何数据。看起来它们曾经使用过,但后端已经更新,不需要数据,并且之前的开发人员将它们保留为POST(或者他们只是从其他文件中复制并粘贴了$.ajax调用,并删除了数据值)。
我将这些空的POST请求更改为GET请求。我假设使用GET比使用空的POST更有效率。我已经搜索过,但没找到有用的信息。
因此,使用GET而不是没有发送数据的POST是否更有效率?

4
当你需要向服务器发送请求并获取响应数据时,可以使用HTTP协议中的GET和POST方法。通常情况下,GET用于获取数据,而POST用于提交数据。 GET把参数包含在URL中,而POST则将参数放在请求体中。当需要从服务器获取资源或检索数据时,使用GET。当需要向服务器发送数据并修改资源状态时,使用POST。 - thirtydot
3个回答

11

我认为GET和POST并不是效率问题,而更多是语义问题。POST请求的意图是什么?如果意图是以某种方式改变系统的状态,那么我建议将其保留为POST请求。如果意图只是从系统中检索一些数据,则应将其改为GET请求。

数据参数的问题并不重要,因为GET和POST请求都可以接受参数(GET使用查询字符串,POST使用post数据)。

除了理论上的考虑外,还有实际原因来使用GET或POST。例如,GET请求可以被Web服务器、代理服务器和客户端缓存,而POST请求据我所知从不被缓存。我相信还有其他差异,但遵循请求的语义本质就能为你解决它们。


4

与性能无关,而是两个动词含义的不同。GET应该不会改变请求的资源,而POST可能会。


2
除了 GETPOST 少一个字符之外,我怀疑它们的性能没有任何区别。两个请求具有完全相同的标头(除了方法部分)和无正文。它们几乎是相同的。
例如:
GET /someResource.ext HTTP/1.1
Accept: text/plain
Accept-Encoding: gzip
// empty line //

对比
POST /someResource.ext HTTP/1.1
Accept: text/plain
Accept-Encoding: gzip
// empty line //

然而,在选择使用GET还是POST时,应该记住它们的目的。当你需要从服务器检索某些内容时,请使用GET;而当你需要向服务器发送某些内容时,请使用POST(这里的“发送”指的是提交,而不是作为参数发送)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接