Vue请求接口封装

vue接口封装

  • 封装请求方法
import axios from 'axios'
import { Message } from 'iview'

//axios请求拦截
service.interceptors.response.use(response => {
	//统一处理返回信息
    const res = response.data
    //根据自己接口格式处理
    if (res.code === 0)
        return Promise.resolve(res)
    else
    	//错误提示 --- iview
        Message.warning(res.message)
        return Promise.reject(res)
},
error => {
	//error.response.data.message == 'Access Denied'  登录过期
    if(error.response.status === 403 && error.response.data.message == 'Access Denied' 
    	&& $cookies.get("loginError") !== "error"){
    	// 设置10秒内不重复提醒登录过期
        $cookies.set("loginError", "error", 10);
        Message.warning("登录超时,请重新登录");
        router.push('/login');
    } else if(error.response.data.message != 'Access Denied'){
   		// error.response.data.message == 'Forbidden' 无权限
        Message.error(error.response.data.message == 'Forbidden' ?
         '您无权限访问/操作此页面下的数据,请联系管理员配置访问权限!' : error.response.data.message)
    }
    return Promise.reject(error);
})

//请求方法封装,拷贝直接用~
export default {
    Get(url, data = {}) {
        return service({
            url: url,
            method: 'get',
            params: data,
        })
    },

    Post(url, data = {}) {
        return service({
            url: url,
            method: 'post',
            data: data,
        })
    },

    Put(url, data = {}) {
        return service({
            url: url,
            method: 'put',
            data: data,
        })
    },

    Delete(url, data = {}) {
        return service({
            url: url,
            method: 'delete',
            data: data,
        })
    }
}
  • 接口方法管理
import service from './service'
export default {
    /**
     * 获取用户信息
     * @param data
     */
    getUserInfo: (data) => {
        return service.Get('/userinfo', data);
    }
 }
  • main.js引入–>全局使用
//引入
import api from './api/api';

放在Vue对象prototype下
Vue.prototype.$api = api;
  • 组件中使用
//data:需要的参数
this.$api.getUserInfo(data)
  .then((res) => {
  	//res接口返回得数据
    //成功
  })
  .catch((err) => {
  	//err错误消息
	//失败
  })
  • 8
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue中使用axios发送请求时,可以将请求接口进行封装,以提高代码的可维护性和复用性。 首先,在Vue项目中安装Axios库: ``` npm install axios --save ``` 然后,在需要使用请求接口的地方引入axios: ``` import axios from 'axios' ``` 接下来,我们可以创建一个名为api.js的文件,用于封装请求接口。在api.js中,我们可以定义各种请求接口的方法,例如: ``` import axios from 'axios' const baseUrl = 'http://api.example.com' //接口请求基础URL export const getUserInfo = (userId) => { return axios.get(baseUrl + '/user/' + userId) } export const postUserInfo = (userInfo) => { return axios.post(baseUrl + '/user', userInfo) } export const deleteUserInfo = (userId) => { return axios.delete(baseUrl + '/user/' + userId) } ``` 在上述代码中,我们定义了三个请求接口方法,分别是获取用户信息、提交用户信息和删除用户信息。 接下来,在需要使用接口的组件中引入这些接口方法: ``` import { getUserInfo, postUserInfo, deleteUserInfo } from './api.js' ``` 然后,在组件中可以直接使用这些封装好的接口方法发送请求,例如: ``` getUserInfo(123).then(response => { //处理请求成功后返回的数据 }).catch(error => { //处理请求失败的错误 }) const userInfo = { //用户信息数据 } postUserInfo(userInfo).then(response => { //处理请求成功后返回的数据 }).catch(error => { //处理请求失败的错误 }) deleteUserInfo(123).then(response => { //处理请求成功后返回的数据 }).catch(error => { //处理请求失败的错误 }) ``` 上述代码演示了如何使用封装好的接口方法发送请求,其中.then()方法处理请求成功后返回的数据,.catch()方法处理请求失败的错误。 通过封装接口方法,我们可以将复杂的请求逻辑隐藏在api.js文件中,使组件更加清晰和简洁,提高了项目的可维护性。同时,由于接口方法已经封装好,可以在其他组件中重复使用,提高了代码的复用性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值