Skip to content

常见请求方法

请求方法是请求行中的第一个单词,它向服务器描述了客户端发出请求的动作类型。在 HTTP 协议中,不同的请求方法只是包含了不同的语义,但是服务器和浏览器的一些约定俗成的行为造成了它们的区别。

请求方法是可以自定义的,但是服务器不认识罢了。

在实践中,客户端和服务器慢慢形成一个共识,约定俗成地规定了一些常见的请求方法:

  • GET,表示向服务器获取资源。业务数据在请求行中,无须请求体。
  • POST,表示向服务器提交信息。通常用于产生新的数据,比如注册,业务数据在请求体中。
  • PUT,表示希望修改服务器的数据。通常用于修改,业务数据在请求体中。
  • DELETE,表示希望删除服务器上的数据。业务数据在请求行中,无需请求体。
  • OPTIONS,发生在跨域的预检请求中,表示客户端向服务器申请跨域提交。
  • TRACE,回显服务器收到的请求,主要用于测试和诊断。
  • CONNECT,用于建立连接管道,通常在代理场景中使用,网页中很少用到。

GET 和 POST 的区别

由于浏览器和服务器约定俗成的规则,造成了 GET 和 POST 请求在 web 中的区别:

  1. 浏览器在发送 GET 请求时,不会附带请求体。
  2. GET 请求的传递信息量有限,适合传递少量数据;POST 请求的传递信息量是没有限制的,适合传输大量数据。
  3. GET 请求只能传递 ASCII 数据,遇到非 ASCII 数据需要进行编码;POST 请求没有限制。
  4. 大部分 GET 请求传递的数据都附带在 path 参数中,能够通过分享地址完整地重现页面,但同时也暴露了数据。若有敏感数据传递,不应该使用 GET 请求,至少不应该放到 path 中。
  5. 刷新页面时,若当前的页面是通过 POST 请求得到的,则浏览器会提示用户是否重新提交。若是 GET 请求得到的页面,则不会提示。
  6. GET 请求的地址可以被保存为浏览器书签,POST 请求不可以。

面试题

  1. Http 常见的请求方法有哪些?

    参考答案

    • GET,表示向服务器获取资源。业务数据在请求行中,无须请求体。
    • POST,表示向服务器提交信息。通常用于产生新的数据,比如注册,业务数据在请求体中。
    • PUT,表示希望修改服务器的数据。通常用于修改,业务数据在请求体中。
    • DELETE,表示希望删除服务器上的数据。业务数据在请求行中,无需请求体。
    • OPTIONS,发生在跨域的预检请求中,表示客户端向服务器申请跨域提交。
    • TRACE,回显服务器收到的请求,主要用于测试和诊断。
    • CONNECT,用于建立连接管道,通常在代理场景中使用,网页中很少用到。
  2. GET 和 POST 的区别是什么?

    参考答案

    从 Http 协议的角度来说,GET 和 POST 它们都只是请求行中的第一个单词,除了语义不同,其实没有本质的区别。

    之所以在实际开发中会产生各种区别,主要是因为浏览器的默认行为造成的。

    受浏览器的影响,在实际开发中,GET 和 POST 有以下区别:

    1. 浏览器在发送 GET 请求时,不会附带请求体。
    2. GET 请求的传递信息量有限,适合传递少量数据;POST 请求的传递信息量是没有限制的,适合传输大量数据。
    3. GET 请求只能传递 ASCII 数据,遇到非 ASCII 数据需要进行编码;POST 请求没有限制。
    4. 大部分 GET 请求传递的数据都附带在 path 参数中,能够通过分享地址完整地重现页面,但同时也暴露了数据。若有敏感数据传递,不应该使用 GET 请求,至少不应该放到 path 中。
    5. 刷新页面时,若当前的页面是通过 POST 请求得到的,则浏览器会提示用户是否重新提交。若是 GET 请求得到的页面,则不会提示。
    6. GET 请求的地址可以被保存为浏览器书签,POST 请求不可以。