vue2 axios2次封装

文章介绍了如何通过npm安装axios库,设置基础URL和超时时间,实现axios的全局配置和响应拦截。接着,文章展示了如何在Vue中使用axios封装GET和POST请求,并在`http.js`中二次封装API接口。最后,示例了在Vue组件中调用这些封装的接口方法。
摘要由CSDN通过智能技术生成

第一步安装:npm install --save axios
第二步:创建一个api.js 文件


import axios from "axios";
 
axios.defaults.baseURL = "https://zzgoodqc.cn"; //全局配置ip地址 写个这别的就不要在写了
 
axios.defaults.timeout = 30000;//超过30s报错
 
//添加响应拦截器
axios.interceptors.response.use(function (response) {
    //可以写if判断,提前拦截错误信息
    return response;
}, function (err) {
    return Promise.reject(err);
});
 
//post封装
export function apiPost(url, params){
    return new Promise((resolve, reject) => {
            axios({
                method: 'post',
                url:url,
                data:params
            }).then(res => {
                resolve(res.data);
            }).catch(err =>{reject(err.data)})
        });
    }
//get 封装
export function apiGet(url, params){ 
    return new Promise((resolve, reject) =>{ 
        axios.get(url, { 
            params: params,
            headers:{"token":sessionStorage.getItem('token')}
        }).then(res => {
            resolve(res.data);
        }).catch(err =>{
            reject(err.data) 
        }) 
   });

第三步,在main.js 中声明原型使用他


import {apiGet,apiPost} from './api/https'
Vue.prototype.$apiGet  = apiGet
Vue.prototype.$apiPost = apiPost

第四步,在页面中使用

分别是

  1. this.$apiGet

  2. this.$apiPost

    二次封装

    再api里面创建一个http.js文件

    import { apiGet } from "./api";
     
    export function getList() {
      return new Promise((resolve, reject) => {
        apiGet("/index.php/index/index/getcode")
          .then((res) => {
            resolve(res);
          })
          .catch((err) => {
            reject(err);
          });
      });
    }

    使用参数

  3. import { getList } from '../api/http'
    export default {
      data() {
        return {
     
        }
      },
      async created() {
        let res = await getList()
        console.log(res, 8888);
      }
    }

Vue2中,对axios进行二封装的方法如下: 1. 首先,安装axiosVueAxios依赖: ```shell npm install axios vue-axios --save ``` 2. 在main.js中导入并使用VueAxios: ```javascript import Vue from 'vue' import axios from 'axios' import VueAxios from 'vue-axios' Vue.use(VueAxios, axios) ``` 3. 创建一个api.js文件,用于封装axios请求: ```javascript import axios from 'axios' // 设置axios的默认配置 axios.defaults.baseURL = 'http://api.example.com' axios.defaults.timeout = 5000 // 创建一个axios实例,并设置拦截器 const instance = axios.create({ baseURL: axios.defaults.baseURL, timeout: axios.defaults.timeout }) instance.interceptors.request.use( config => { // 在发送请求之前做些什么 return config }, error => { // 对请求错误做些什么 return Promise.reject(error) } ) instance.interceptors.response.use( response => { // 对响应数据做些什么 return response }, error => { // 对响应错误做些什么 return Promise.reject(error) } ) // 封装具体的请求方法 export const getData = params => { return instance.get('/data', { params }) } export const postData = data => { return instance.post('/data', data) } ``` 4. 在需要使用的组件中引入api.js,并通过调用封装的方法发送请求: ```javascript import { getData, postData } from './api.js' export default { methods: { fetchData() { getData({ id: 1 }) .then(response => { // 处理返回的数据 }) .catch(error => { // 处理请求失败的情况 }) }, postData() { postData({ name: 'example' }) .then(response => { // 处理返回的数据 }) .catch(error => { // 处理请求失败的情况 }) } } } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值