什么是HTTP方法?
HTTP方法是HTTP协议里最核心的概念之一。它告诉服务器:你要我对这份数据做什么?
打个比方,你去餐厅点餐。服务员拿到的不只是"一份宫保鸡丁"这个订单,还有你的意图——你是要"新增一道菜"还是"把宫保鸡丁改成鱼香肉丝",或者是"退掉这道菜"。HTTP方法就是这个意图。
HTTP定义了8种标准方法,但日常开发中最常用的只有四种:
| 方法 | 作用 | 类比 |
|---|---|---|
| GET | 获取资源 | 查看菜单 |
| POST | 创建资源 | 下新订单 |
| PUT | 更新资源 | 修改订单 |
| DELETE | 删除资源 | 取消订单 |
每种方法怎么用?
GET — 只读,安全,幂等
GET用来从服务器拿数据。它不会改变服务器的任何状态,只是读取。
GET /api/users/123
这条请求的意思是:“帮我看看ID为123的用户信息。”
三个关键词:
- 安全:不会修改数据,多调用几次也没副作用
- 幂等:调一次和调一百次结果一样
- 参数在URL里:
GET /api/users?age=25&city=beijing
POST — 提交数据,创建资源
POST用来向服务器发送数据,通常是创建新资源。
POST /api/users
Body: {"name": "张三", "email": "zhangsan@example.com"}
这条请求的意思是:“服务器上创建一个新用户叫张三。”
三个关键词:
- 不安全:会修改服务器数据
- 非幂等:调两次就创建两个用户
- 数据在请求体里:适合传大量数据
PUT — 替换整个资源
PUT用来更新已有资源,而且是用新数据完全替换旧数据。
PUT /api/users/123
Body: {"name": "李四", "email": "lisi@example.com"}
这条请求的意思是:“把ID为123的用户信息全部改成新的。”
三个关键词:
- 幂等:调一次和调十次结果一样,最终都是那个新数据
- 全量更新:服务器会用你给的数据完全覆盖旧的
- 需要知道资源ID:你必须明确告诉服务器改哪个
DELETE — 删除资源
DELETE顾名思义,用来删除服务器上的某个资源。
DELETE /api/users/123
这条请求的意思是:“把ID为123的用户删掉。”
三个关键词:
- 幂等:删一次和删十次结果一样,都是没了
- 通常不需要请求体:URL里的ID就够了
- 可能软删除:很多系统实际是标记为"已删除"而非物理删除
其他常用方法
除了上面四个,还有几个偶尔会遇到:
- PATCH:部分更新。比如只想改用户名,不用PUT整个用户对象。它和PUT的区别是:PUT是全量替换,PATCH是局部修改。
- HEAD:和GET一样,但不返回响应体,只返回头部信息。常用于检查资源是否存在。
- OPTIONS:询问服务器支持哪些方法。跨域请求时浏览器会自动发送。
怎么快速记住?
一个生活化的记忆法:
想象你在操作一个共享文档(类似Google Docs):
- GET = 打开文档看内容(只读)
- POST = 新建一个文档(创建)
- PUT = 把整个文档重写一遍(全量替换)
- PATCH = 改其中几段话(部分修改)
- DELETE = 删除这个文档
总结
HTTP方法就是你和服务器沟通时的"动词"。GET、POST、PUT、DELETE构成了RESTful API的基础,理解了它们,你就理解了绝大多数Web API的设计思路。
实际开发中,前端调用API时用的就是这些方法。了解它们的区别,不仅能帮你写出更规范的代码,还能在调试接口问题时快速定位问题所在。
下次看到API文档里的GET /api/xxx或POST /api/yyy,你就知道那不只是个路径,而是一条明确的操作指令。