Vue3引入axios封装接口

1.安装

npm install axios -S

2.新建
在这里插入图片描述

3.http.js

import axios from "axios";
import qs from "qs";
import {
    
    
  Dialog
} from "vant";

// axios.defaults.baseURL = 'http://hp.suoluomei.cn/index.php'  //正式
axios.defaults.baseURL = 'http://hp.suoluomei.cn/index.php' //测试

//post请求头
axios.defaults.headers.post["Content-Type"] =
  "application/x-www-form-urlencoded;charset=UTF-8";
//设置超时
axios.defaults.timeout = 10000;

axios.interceptors.request.use(
  config => {
    
    
    return config;
  },
  error => {
    
    
    return Promise.reject(error);
  }
);

axios.interceptors.response.use(
  response => {
    
    
    if (response.status == 200) {
    
    
      return Promise.resolve(response);
    } else {
    
    
      return Promise.reject(response);
    }
  },
  error => {
    
    
    Dialog.alert({
    
    
      title: "提示",
      message: "网络请求失败,请刷新重试"
    });
  }
);
export default {
    
    
  post(url, data) {
    
    
    return new Promise((resolve, reject) => {
    
    
      axios({
    
    
          method: 'post',
          url,
          data: qs.stringify(data),
        })
        .then(res => {
    
    
          resolve(res.data)
        })
        .catch(err => {
    
    
          reject(err)
        });
    })
  },

  get(url, data) {
    
    
    return new Promise((resolve, reject) => {
    
    
      axios({
    
    
          method: 'get',
          url,
          params: data,
        })
        .then(res => {
    
    
          resolve(res.data)
        })
        .catch(err => {
    
    
          reject(err)
        })
    })
  }
};

4.request.js

import http from './http'
const api_key = '233d4cad34c34d343785s34dw3er3ds3234esd4'
let sign = process.env.VUE_APP_SIGN
if (process.env.NODE_ENV === 'production') {
    
    
  sign = localStorage.getItem("sign")
} else {
    
    
  sign = '17a1920fdc3c3c25d1bf7c6dd724f5cf'
}

const post = (url, data = {
    
    }) =>
  http.post(
    url,
    Object.assign({
    
    
        api_key: api_key,
        sign,
      },
      // {
    
    
      //   data: Object.assign({
    
    
      //       role_id: role_id //如果需要再包层data就这样写
      //     },
      //     data
      //   )
      // }
      data
    )
  )
const get = (url, params = {
    
    }) =>
  http.get(
    url,
    Object.assign({
    
    
        api_key: api_key,
        sign
      },
      params
    )
  )

// 接口说明
const getFissionCourseList = data => post('getFissionCourseList', data)

const getGetrequs = params => get('getFissionCourseList', params)
//接口导出
export {
    
    
  getFissionCourseList,
  getGetrequs
}

5.页面引入使用

<template>
  <div class="box">
    <div class="demo">欢迎来到VUE3</div>
    <van-button type="success">成功按钮</van-button>
  </div>
</template>

<script>
import {
     
      getFissionCourseList, getGetrequs } from "../../utils/request";
export default {
     
     
  data() {
     
     
    return {
     
     
      date: "",
    };
  },
  mounted() {
     
     
    this.getFissionCourseList();
    this.getGetrequs();
  },
  methods: {
     
     
    async getFissionCourseList() {
     
     
      await getFissionCourseList({
     
      t35: 333 }).then((res) => {
     
     
        console.log(res);
      });
    },
    async getGetrequs() {
     
     
      await getGetrequs({
     
      t35: 333 }).then((res) => {
     
     
        console.log(res);
      });
    },
  },
};
</script>

<style scoped>
@import "./index.less";
</style>

猜你喜欢

转载自blog.csdn.net/hql1024/article/details/109287138