封装 axios GET 请求

292 阅读1分钟

应用开发时,常需要发送大量请求,而且每个请求间常常只有接口相对地址查询参数不同,基本路径请求函数都一样,所以,这里通过对 axios 的 GET 请求进行封装,使后台使用时仅需传入查询参数便可获取后台返回的数据。

一、使用 fastmock 配置后端接口

482c34b52c30fda869acefea1b7c045.png

80ebd3d6fe80775beca7bf1da45c928.png

二、封装 axios GET 请求

  • request.js。使用函数柯里化的方式,先传入路径 url,在返回的函数中,再传入参数 params。
import axios from "axios";

export default function (url) {
  return function (params) {
    return axios
      .get(url, params)
      .then((res) => {
        console.log(res.data);
      })
      .catch((err) => {
        console.log(err);
      });
  };
}
  • index.js。导入 request.js 中的文件,并设置 url 的基本路径 baseURL,再将获取数据的回调函数导出。
import request from "./request";
const baseURL =
  "https://www.fastmock.site/mock/e68d869253f9e376375eb399ba932142/test";

const getApi1 = request(baseURL + "/api1");
const getApi2 = request(baseURL + "/api2");

export { getApi1, getApi2 };
  • app.vue。导入 getApi1 和 getApi2,传入参数,获取相应的数据
<template>
  <button id="app"
          @click="getApi1({ params: { id: '1' } })">
    点击我
  </button>
</template>

<script>
// const axios = require("axios")
import { getApi1, getApi2 } from "./api/index.js"
export default {
  methods: {
    getApi1,
    getApi2
  }
}
</script>

三、页面打印效果

  • 调用 getApi1,传入参数 { params: { id: '1' } }

image.png

  • 调用 getApi1,传入参数 { params: { id: '2' } }

image.png