vue axios配置

首先安装,使用了vue-axios

npm install axios --save
npm install vue-axios --save

其次在src下面新建一个网络请求文件夹,用来放请求地址和网络请求封装文件等

这里是新建文件结构

url.js中放项目请求地址导出即可

const onlineUrl = ''
const testUrl = 'http://160.16.98.97:8081'

export default URL

在axios.js中我们来封装,这里采用一种抽离封装的方式来写

import URL from './url.js' //项目的请求地址
import Vue from 'vue'
import vueAxios from 'vue-axios'
import axios from 'axios'
Vue.use( vueAxios, axios )

//配置请求头,这里设置了前端proxyTable跨域,所以是/api,正式上线改成URL.onlineUrl即可
var instance = axios.create({
    baseURL: '/api',
    timeout: 1000,
    headers: {
        'Content-type': 'applicaiton/x-www-form-urlencoded'
    }
})

export default class Api {

    static instance = instance

    static baseRequest( url, method = 'get', data = {} ) {
        switch ( method.toLocaleLowerCase() ) {
            case 'get':
                return this.instance.get( url, data )
                        .then( res => this.onSuccess(res), res => this.onFail(res))
                break;
            case 'post':
                return this.instance.post( url, data )
                        .then( res => this.onSuccess(res), res => this.onFail(res))
                break;
            default:
                break;
        }
    }

    static onSuccess(res) {
        return new Promise(( resove, reject) => {
            if ( res.code == 1) {
                resove(res.data)
            } else {
                reject(res.message)
            }
        })
    }

    static onFial(res) {
        return new Promise(( resove, reject ) => {
            reject(res.message)
        })
    }

    static addToCart(data) {
        return this.baseRequest( '/api/signin', 'post', data)
    }
}

接下来在main.js中做全局配置,将写好的类挂载在vue原型上

import Api from './api/axios.js'
Vue.prototype.$api = Api

在component中就可以使用了(上面axios中我们添加了一个addToCart请求)

methods: {
    addToCart() {
        var data = { userId: 'deven', password: '123456'}
        this.$api.addToCart(data).then(
            res => {
                console.log('success') 
            },
            err => {
                console.log('fail')
            }
        ).catch(res => {
            console.log(res)
        })
    }
}

跨域配置,在config的index.js中

proxyTable: {
        '/api': {
            target: 'http://160.16.98.97:8081',
            changeOrigin: true,
            pathRewrite: {'^/api' : ''}
        }
    },

这样一个请求就基本完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值