Axios 封装了标准 HTTP 方法,对应不同的业务操作场景,核心方法如下:
GET:用于从服务器获取数据,通常用于查询或读取操作
POST:用于向服务器提交数据,通常用于创建新资源
PUT:用于更新服务器上的资源,通常对整个资源进行全量更新
DELETE:用于请求服务器删除指定的资源
PATCH:用于对资源进行部分更新,仅更新提交的字段数据
HEAD:类似于 GET 请求,服务器仅返回 HTTP 头信息,不返回实体数据,用于校验资源元信息
OPTIONS:用于获取目标资源支持的通信选项,常用于跨域请求的预检
GET 请求 是最常用的请求类型,具备幂等、可缓存的特性,无请求体,参数会拼接在 URL 中,仅适合传递少量非敏感数据。 Axios 提供了 请求别名 和 配置对象 两种书写方式,以下是完整实现:
Axios 为每种 HTTP 方法提供了专属别名(axios.get()/axios.post()),语法更简洁,是日常开发的首选。
import axios from "axios";
// 基础接口地址(规范:末尾不加多余符号)
const BASE_URL: string = "https://api.bilibili.com/x/web-interface/wbi/search/default";
// 发送无参 GET 请求
const get = (url: string): void => {
axios
.get(`${BASE_URL}${url}`)
.then((result) => {
// 响应核心数据:data 为服务器返回的业务数据
console.log(result.data);
})
.catch((err) => {
// 捕获请求异常
console.error("请求失败:", err.message);
});
};
// 调用:直接传递参数串
get("?w_rid=83090144cc65fe3a3a998c93e472f138&wts=1729076411");推荐使用 params 配置项传递参数,Axios 会自动拼接 URL,避免手动拼接出错。
import axios from "axios";
const BASE_URL: string = "https://api.bilibili.com/x/web-interface";
// 带参 GET 请求(TS 类型定义)
const getByParams = (url: string, w_rid: string, wts: string): void => {
axios
.get(BASE_URL + url, {
// params:自动序列化并拼接 URL 参数
params: { w_rid, wts },
})
.then((result) => {
console.log(result.data);
})
.catch((err) => {
console.error(err.message);
});
};
// 调用:分离参数,可读性更高
getByParams("/wbi/search/default", "83090144cc65fe3a3a998c93e472f138", "1729076411");通过统一配置对象发起请求,适合需要自定义请求头、超时、响应类型等复杂配置的场景。
import axios from "axios";
const BASE_URL: string = "http://localhost:8080/";
const get = (url: string): void => {
// 完整配置对象
axios({
url: BASE_URL + url,
method: "get", // 指定请求方法
})
.then((response) => {
console.log(response.data);
})
.catch((err) => {
console.log(err.message);
});
};
get("user/list");import axios from "axios";
const BASE_URL: string = "http://localhost:8080/";
// 根据 ID 查询数据
const getById = (url: string, id: number): void => {
axios({
url: BASE_URL + url,
method: "get",
params: { id }, // 携带查询参数
})
.then((response) => {
console.log(response.data);
})
.catch((err) => {
console.log(err.message);
});
};
getById("user/detail", 1001);避免重复编写 BASE_URL、超时时间等配置,是企业级开发的最佳实践:
// 创建自定义实例
const request = axios.create({
baseURL: "http://localhost:8080/", // 统一基础地址
timeout: 5000, // 请求超时 5 秒
headers: { "Content-Type": "application/json" },
});
// 使用实例发送请求
request.get("user/list");简化异步代码,替代 then/catch,代码更简洁易读:
const getList = async () => {
try {
const res = await axios.get(BASE_URL + "user/list");
console.log(res.data);
} catch (err) {
console.error(err.message);
}
};params:用于 GET / DELETE,参数拼接在 URL 中
data:用于 POST / PUT / PATCH,参数放在请求体中
指定返回数据类型,提升代码类型安全性:
// 定义数据类型
interface User {
id: number;
name: string;
}
// 泛型指定响应类型
axios.get<User[]>(BASE_URL + "user/list").then(res => {
console.log(res.data); // res.data 自动推导为 User[]
});Axios 提供别名写法(简洁)和配置对象写法(灵活)两种请求方式,满足不同场景
GET 用 params 传参,POST/PUT 用 data 传参,是固定规范
企业开发推荐:创建 Axios 实例 + async/await + TypeScript 类型约束
所有 HTTP 方法严格对应 RESTful 规范,保证接口设计标准化