Yasin

Yasin

GET vs POST 的区别

GET vs POST 的区别

核心语义

GET POST
语义 获取资源 提交数据/创建资源
幂等 ✅ 是 ❌ 否
安全性(只读) ✅ 不修改服务端状态 ❌ 会修改

数据传递方式

// GET:参数拼在 URL 上(Query String)
GET /api/users?page=1&size=10

// POST:数据放在请求体(Body)
POST /api/users
Content-Type: application/json
{ "name": "Alice", "age": 18 }

主要区别对比

特性 GET POST
参数位置 URL 查询字符串 请求体 Body
可见性 参数暴露在 URL 中 Body 不直接可见
长度限制 受 URL 长度限制(~2048字符) Body 理论无限制
缓存 浏览器会缓存 默认不缓存
浏览器历史 URL 会记录在历史 不会
书签 可以收藏 不行
重复提交 刷新页面不会提示 浏览器会弹出确认框

安全性误区

"POST 比 GET 更安全"——这是错的

GET  /login?password=123   ← 密码在 URL,会被日志记录  ❌ 危险
POST /login  body: { password: "123" }  ← Body 不在 URL,稍好一点

但两者都是明文传输,真正的安全靠 HTTPS,而不是 GET/POST 的区别

使用场景

GET  → 搜索、筛选、分页、查看详情(读取操作)
POST → 登录、注册、提交表单、创建资源(写入操作)
PUT  → 更新资源(全量替换)
DELETE → 删除资源