Skip to content

GET 和 POST 的区别

GET 和 POST 区别

  • GET
  • 用于获取资源,参数在 URL 中。
  • POST
  • 用于提交数据,参数在请求体中。
  • 主要区别
  • 用途:GET 获取,POST 提交。
  • 参数位置:GET 在 URL,POST 在 Body。
  • 安全性:GET 明文,POST 更安全。
  • 数据量:GET 受 URL 长度限制,POST 无限制。

核心点

  • 功能和传输方式不同。

1. 区别详解

(1) 用途

  • GET
  • 请求服务器返回资源(如页面、文件)。
  • 幂等:多次请求结果一致。
  • POST
  • 向服务器提交数据(如表单、文件)。
  • 非幂等:多次请求可能改变状态。
  • 示例
  • GET:GET /user?id=1 获取用户。
  • POST:POST /user 创建用户。

(2) 参数位置

  • GET
  • 参数附加在 URL 查询字符串(?key=value)。
  • 示例:http://example.com?name=Alice&age=25
  • POST
  • 参数放在 HTTP 请求体中。
  • 示例:
POST /submit HTTP/1.1
Host: example.com
Content-Type: application/json

{"name": "Alice", "age": 25}

(3) 安全性

  • GET
  • 参数明文可见,易被记录(浏览器历史、日志)。
  • 不适合敏感数据。
  • POST
  • 参数在请求体,相对隐蔽。
  • 可配合 HTTPS 加密。
  • 注意
  • GET 并非不安全,只是暴露参数。

(4) 数据量

  • GET
  • URL 长度受限(浏览器和服务器限制,约 2KB-8KB)。
  • POST
  • 请求体无明确限制,可传大文件。
  • 示例
  • GET:查询条件。
  • POST:文件上传。

2. 其他区别

  • 缓存
  • GET:可被浏览器缓存(如 304)。
  • POST:通常不缓存。
  • 编码
  • GET:URL 编码(application/x-www-form-urlencoded)。
  • POST:支持多种(如 multipart/form-data)。
  • 后退/刷新
  • GET:无副作用。
  • POST:可能重复提交。

3. 对比表

特性 GET POST
用途 获取资源 提交数据
参数位置 URL 查询字符串 请求体
安全性 明文,较低 隐蔽,较高
数据量 有限(URL 长度) 无限制
幂等性
缓存 支持 不支持

4. 延伸与面试角度

  • 与 REST
  • GET:查询(Read)。
  • POST:创建(Create)。
  • 实际应用
  • GET:搜索框参数。
  • POST:登录表单。
  • 误区
  • GET 不一定比 POST 快,取决于服务器。
  • 面试点
  • 问“区别”时,提用途和安全性。
  • 问“场景”时,提 REST 或表单。

总结

GET 用于获取资源,参数在 URL,适合简单查询;POST 用于提交数据,参数在请求体,适合复杂操作。区别在用途、位置、安全性和数据量。面试时,可提幂等性或举例,展示理解深度。