axios简介

96 阅读2分钟

axios 简介

axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,它本身具有以下特征:


  • 从浏览器中创建 XMLHttpRequest
  • 从 node.js 发出 http 请求
  • 支持 Promise API
  • 拦截请求和响应
  • 转换请求和响应数据
  • 取消请求
  • 自动转换JSON数据
  • 客户端支持防止 CSRF/XSRF
//引入 axios,可自由选择引入的方式,下面为 cdn 引入
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>;

//简单发送请求,get请求
axios.get("http://wuyou.com/common/get?name=小明&age=18");

//发送请求,并进行响应处理,可使用异步函数 async
//await 会暂停当前函数的执行,等 await 后面的操作完成后,继续当前函数的执行。使用 async 和 await 的原因是:从请求到响应需要时间,不进行等待则后续的操作可能等不到响应的数据返回
async () => {
  //写法1:const res1 = await axios.get("http://wuyou.com/common/get?name=小明&age=18");
  //写法2:
  const res1 = await axios.get("http://wuyou.com/common/get", {
    params: {
      name: "小明",
      age: 18,
    },
  });

  //post 请求的参数,不需要放在 params 中
  const res2 = await axios.post("http://wuyou.com/common/post", {
    name: "小明",
    age: 18,
  });

  //打印响应数据
  console.log(res1.data);
  console.log(res2.data);
};

async () => {
  //创建新的 axios 实例并配置实例,后续可直接使用该实例进行操作
  const ins = axios.create({
    //配置基本地址,
    baseURL: "http://http://wuyou.com",
  });

  //配置拦截器(可选)
  //下面为请求拦截器,只要发送请求,都会经过拦截器的处理
  //使用了interceptors.request.use方法来添加一个请求拦截器。该方法接受一个回调函数作为参数,这个回调函数会在每个请求发送之前被调用。最后,通过return config语句将修改后的请求参数 config 返回。目的是为了传递给下一个拦截器或发送请求的过程。
  ins.interceptors.request.use((config) => {
    console.log("发送请求");
    return res;
  });

  //响应拦截器
  //下面为响应拦截器。只要接受响应,都会经过拦截器的处理
  ins.interceptors.response.use((res) => {
    console.log("发送请求");
    return config;
  });

  //拦截器流程
  //发送请求 -> 请求拦截器 -> 发送处理后的请求 -> 服务器接收并处理请求 -> 传回响应数据 -> 响应拦截器 -> 接收处理后的响应数据

  //"common/get" 被解析为 baseURL + "common/get"
  //为 "http://wuyou.com/common/get",相当于做了一个拼接,简化代码
  const res1 = await ins.get("/common/get", {
    params: {
      name: "小明",
      age: 18,
    },
  });

  const res2 = await ins.post("/common/post", {
    name: "小明",
    age: 18,
  });

  //打印响应数据
  console.log(res1.data);
  console.log(res2.data);
};