Axios 网络请求到底分哪几类?
Axios 是一个专门用于发送 HTTP 请求的 JavaScript 库。前端可以通过它和服务器通信。比如:获取数据登录注册上传内容修改信息删除数据现在大部分 Vue、React、Next.js 项目里几乎都会用到 Axios。因为它比原生请求 API 更方便。而这些,其实分别对应不同的网络行为。以前我一直觉得:Axios 只是一个“发请求的工具”。后来才慢慢理解:真正重要的,其实是 HTTP
最近在写项目的时候,我开始频繁接触 Axios。
以前我对网络请求的理解其实很简单:
axios.get()
axios.post()
能请求成功就行。
但后来接触的越来越多,开始看到:
patch
put
delete
我才发现:
原来这些并不是“随便起的名字”,而是 HTTP 网络通信里真正存在的请求类型。
Axios 只是帮我们更方便地发送请求,而真正决定“这次请求想干什么”的,其实是 HTTP Method(请求方式)。
理解这些之后,看后端接口文档会清晰很多。
什么是 Axios?
Axios 是一个专门用于发送 HTTP 请求的 JavaScript 库。
前端可以通过它和服务器通信。
比如:
-
获取数据
-
登录注册
-
上传内容
-
修改信息
-
删除数据
现在大部分 Vue、React、Next.js 项目里几乎都会用到 Axios。
因为它比原生请求 API 更方便。
最常见的写法就是:
axios.get()
axios.post()
axios.patch()
axios.delete()
而这些,其实分别对应不同的网络行为。
GET —— 获取数据
GET 是最常见的一种请求。
它的作用很简单:
从服务器读取数据。
比如:
-
获取用户信息
-
获取商品列表
-
获取文章详情
-
获取聊天记录
这些基本都是 GET 请求。
代码:
axios.get('/api/user')
如果需要传参数:
axios.get('/api/user?id=1')
最终请求地址会变成:
/api/user?id=1
所以 GET 的特点是:
-
参数通常放在 URL 上
-
不会修改服务器数据
-
更适合“查询”
这也是为什么浏览器直接访问网页,本质上也是 GET 请求。
POST —— 创建数据
POST 的作用是:
向服务器提交新的数据。
比如:
-
登录
-
注册
-
发布评论
-
创建订单
-
上传内容
这些通常都会使用 POST。
代码:
axios.post('/api/login', {
username: 'admin',
password: '123456'
})
和 GET 最大的区别是:
POST 的数据放在请求体(body)里,而不是 URL。
所以它能传更多、更复杂的数据。
例如:
axios.post('/api/article', {
title: 'Axios学习',
content: '这是正文'
})
这就是在“新增”一篇文章。
所以很多人会把:
POST = 新增
作为最基础的理解。
PUT —— 整体更新
PUT 比较容易和 PATCH 搞混。
PUT 的核心概念是:
用新的完整数据替换旧数据。
比如服务器原本的数据:
{
"name": "Tom",
"age": 18
}
现在你发送:
axios.put('/api/user/1', {
name: 'Jack',
age: 20
})
服务器会认为:
你传来的就是新的完整用户信息。
也就是说:
PUT 更像“整体覆盖”。
在一些 RESTful 风格接口里,PUT 通常代表:
更新整个资源
PATCH —— 局部更新
这是我最近写项目时见得越来越多的请求方式。
PATCH 的作用:
只修改部分字段。
例如:
axios.patch('/api/user/1', {
age: 20
})
这里只更新 age。
其它字段不会动。
这就是 PATCH 和 PUT 最大的区别:
-
PUT:整体替换
-
PATCH:局部修改
现在很多现代项目里,PATCH 的使用频率其实越来越高。
因为真实开发中:
我们很少一次把整个对象全部重新提交。
更多时候只是:
-
改头像
-
改昵称
-
改状态
-
改一个字段
所以 PATCH 会更灵活。
DELETE —— 删除数据
DELETE 的作用就很直接:
删除服务器上的资源。
例如:
axios.delete('/api/user/1')
常见场景:
-
删除评论
-
删除文章
-
删除订单
-
删除用户
都属于 DELETE 请求。
它和数据库里的 delete 操作概念很像。
Axios 为什么这么多人用?
其实现在浏览器已经有原生 fetch 了。
但 Axios 依然非常流行。
因为它在工程化项目里确实更舒服。
1. 自动处理 JSON
原生请求很多时候需要:
JSON.stringify()
但 Axios 会自动帮你处理。
代码更简洁。
2. 请求拦截器
这是 Axios 最重要的功能之一。
比如:
项目登录后会有 token。
那每次请求都需要:
headers: {
token: xxx
}
如果手动加会非常麻烦。
于是可以统一拦截:
axios.interceptors.request.use(config => {
config.headers.token = 'xxx'
return config
})
这样所有请求都会自动携带 token。
大型项目里几乎都会这样做。
3. 响应拦截器
比如:
后端返回:
{
"code": 401
}
说明登录过期。
这时候可以统一跳转登录页:
axios.interceptors.response.use(res => {
if (res.data.code === 401) {
location.href = '/login'
}
return res
})
这也是 Axios 特别适合项目开发的原因。
RESTful 风格到底是什么?
写接口的时候经常会看到:
GET /user
POST /user
PUT /user/1
PATCH /user/1
DELETE /user/1
其实这就是 RESTful API 风格。
核心思想是:
同一个路径,通过不同请求方式表达不同操作。
比如:
GET /user/1
表示获取用户。
而:
DELETE /user/1
表示删除用户。
路径没变。
变化的是请求类型。
这也是现代前后端开发里非常主流的一种接口设计方式。
最后
以前我一直觉得:
Axios 只是一个“发请求的工具”。
后来才慢慢理解:
真正重要的,其实是 HTTP 请求方式本身。
因为不同请求类型,代表的是不同的数据操作语义。
简单总结就是:
GET 查数据
POST 新增数据
PUT 整体更新
PATCH 局部更新
DELETE 删除数据
当真正理解这些之后,再去看后端接口文档、接口设计、RESTful API,就不会再觉得混乱了。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)