🚀 PUT 和 POST 的区别
🚀 1️⃣ 功能与语义
POST
:用于创建资源。它将数据发送到服务器,并让服务器根据请求生成新资源。PUT
:用于更新资源。它将数据发送到服务器,并替换目标资源的全部内容。如果资源不存在,则创建资源。
⚙️ 2️⃣ 幂等性
POST
:非幂等。- 多次发送同样的
POST
请求,服务器可能会创建多个资源(生成不同 ID)。 - 例如:连续发送两次用户注册请求,可能会生成两条用户记录。
- 多次发送同样的
PUT
:幂等。- 多次发送同样的
PUT
请求,结果不会改变。 - 例如:将用户的邮箱更新为
abc@example.com
,多次发送相同的PUT
请求,最终的邮箱仍然是abc@example.com
。
- 多次发送同样的
🔥 3️⃣ 请求与响应
-
POST
- 请求体:携带新资源的数据。
- 响应:返回新资源的地址或 ID。
- 常见状态码:
201 Created
:资源创建成功。400 Bad Request
:请求体有误。
-
PUT
- 请求体:携带更新后的资源数据。
- 响应:返回更新后的资源或状态。
- 常见状态码:
200 OK
:资源更新成功。201 Created
:资源不存在,已创建新资源。204 No Content
:更新成功,无返回内容。
🔍 4️⃣ 使用场景
- ✅
POST
- 用户注册:创建新用户。
- 上传文件:将新文件存储到服务器。
- ✅
PUT
- 更新用户信息:修改已有用户的邮箱、密码等。
- 覆盖资源:更新产品描述等信息。
💡 5️⃣ 举例
假设有 /users
接口:
POST /users
→ 创建新用户(服务器分配 ID)。PUT /users/123
→ 覆盖 ID 为 123 的用户信息。
💬 面试回答示例
PUT
和POST
都用于向服务器发送数据,但语义和幂等性不同:
POST
是非幂等的,用于创建资源,重复请求可能会生成多个资源;PUT
是幂等的,用于更新资源,重复请求不会改变最终结果。POST
多用于创建用户、提交表单;PUT
多用于更新用户信息或资源替换。