源本科技 | 码上会

网络框架 Axios 中的 GET

2026/04/17
2
0

引言

Axios 封装了标准 HTTP 方法,对应不同的业务操作场景,核心方法如下:

  • GET:用于从服务器获取数据,通常用于查询或读取操作

  • POST:用于向服务器提交数据,通常用于创建新资源

  • PUT:用于更新服务器上的资源,通常对整个资源进行全量更新

  • DELETE:用于请求服务器删除指定的资源

  • PATCH:用于对资源进行部分更新,仅更新提交的字段数据

  • HEAD:类似于 GET 请求,服务器仅返回 HTTP 头信息,不返回实体数据,用于校验资源元信息

  • OPTIONS:用于获取目标资源支持的通信选项,常用于跨域请求的预检


GET 请求

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);

其他补充

统一创建 Axios 实例

避免重复编写 BASE_URL、超时时间等配置,是企业级开发的最佳实践

// 创建自定义实例
const request = axios.create({
  baseURL: "http://localhost:8080/", // 统一基础地址
  timeout: 5000, // 请求超时 5 秒
  headers: { "Content-Type": "application/json" },
});

// 使用实例发送请求
request.get("user/list");

async / await

简化异步代码,替代 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,参数放在请求体中

TS 类型化响应数据

指定返回数据类型,提升代码类型安全性:

// 定义数据类型
interface User {
  id: number;
  name: string;
}

// 泛型指定响应类型
axios.get<User[]>(BASE_URL + "user/list").then(res => {
  console.log(res.data); // res.data 自动推导为 User[]
});

总结

  1. Axios 提供别名写法(简洁)和配置对象写法(灵活)两种请求方式,满足不同场景

  2. GETparams 传参,POST/PUTdata 传参,是固定规范

  3. 企业开发推荐:创建 Axios 实例 + async/await + TypeScript 类型约束

  4. 所有 HTTP 方法严格对应 RESTful 规范,保证接口设计标准化