最近在写项目的时候,我开始频繁接触 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,就不会再觉得混乱了。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐