Vue: axios 请求封装及设置默认域名前缀 (for Vue 2.0)

摘要:
process.env.NODE_ env=='生产'?

1. 实现效果

以get方法向http://192.168.32.12:8080/users 发起请求、获取数据并进行处理

this.apiGet('/users', {})
  .then((res) => {
    console.log(res)
  }, (err) => {
    console.log(err)
  })

2. 实现步骤一之配置域名前缀

2.1 安装axios

cnpm install axios --save

2.2 配置webpack.base.conf.js 文件

引入

const webpack = require('webpack')

在项目根目录下的build 中可以找到webpack.base.conf.js 文件,对文件中的内容进行以下两项操作:

  在module.exports之前插入代码

// define the different HOST between development and production environment
var DEV_HOST = JSON.stringify('http://192.168.32.12:8080')
var PUB_HOST = JSON.stringify('http://{部署服务器ip和端口}')

  在module.exports 中添加与entry、output、resolve等选项并列的plutins选项

plugins: [
  new webpack.DefinePlugin({
    HOST: process.env.NODE_ENV === 'production' ? PUB_HOST : DEV_HOST
  })

2.3 配置main.js 文件

import axios from 'axios'
axios.defaults.baseURL = HOST
window.axios = axios
window.HOST = HOST
 
const bus = new Vue()
window.bus = bus

3. 实现步骤二之封装axios

3.1 新建http.js 文件, static下边新建 js 文件夹

const apiMethods = {
    methods: {
        apiGet(url, data) {
            return new Promise((resolve, reject) => {
                axios.get(url, data).then((response) => {
                    resolve(response.data)
                }, (response) => {
                    reject(response)
                    console.log(response)
                    bus.$message({
                        message: '请求超时,请检查网络',
                        type: 'warning'
                    })
                })
            })
        },
        apiPost(url, data) {
            return new Promise((resolve, reject) => {
                axios.post(url, data, {
                    headers: {
                        'Content-Type': 'application/json'
                    }
                }).then((response) => {
                    resolve(response.data)
                }).catch((response) => {
                    console.log('f', response)
                    resolve(response)
                    bus.$message({
                        message: '请求超时,请检查网络',
                        type: 'warning'
                    })
                })
            })
        }
    }
}

export default apiMethods

3.2 文件引入

在需要发送ajax的请求文件中引入http.js

import http from '../../../../static/js/http.js'

并在该文件的export default 末尾添加选项

mixins: [http]

3.3 方法调用

this.apiGet('/index.php/api/v1/goods/list', {
                    params: {
                        property_name: '秒杀'
                    }
                })
                .then((res) => {
                    if(res.code == 0){
                        this.hotListDate = res.result;
                    }else{
                        this.$message.error(res.message);
                    }
                }, (err) => {
                    console.log(err)
                });

post

this.apiPost('/index.php/api/v1/user/login', {
                    mobile      : this.form.phone,
                    password    : this.form.password
                })
                .then((res) => {
                    if(res.code == 0){
                       
                    }else{
                        this.$message.error(res.message);
                    }
                }, (err) => {
                    console.log(err)
                });

免责声明:文章转载自《Vue: axios 请求封装及设置默认域名前缀 (for Vue 2.0)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Sphinx速成指南Linux系统移植(1)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

mysql中文、英文别名排序问题,order by 关键字详解

 order by 关键字详解:   SELECT intcode AS 商品编码, product_title AS 名称, retailprice AS 零售价, purchaseprice AS 合同进价 FROM product_detail WHERE brand='0063飘柔' AND purchaseprice>10 ORDE...

怎么将swagger API导出为HTML或者PDF

文章目录 将swagger API导出为HTML或者PDF 什么是Asciidoc swagger2markup-maven-plugin asciidoctor-maven-plugin 使用命令行 PDF的中文展示 PDF中文主题在maven中的使用 将swagger API导出为HTML或者PDF 现在有很多项目都是使用的swagger...

vue 在nginx下页面刷新出现404问题解决和在nginx下页面加载了js但是页面显示空白问题解决

一、vue 在nginx下页面刷新出现404   在网上翻遍了所有这样问题的解决办法,全都是一个解决办法也是正确的解决办法,(后来在vue官网上关于history方式出现404解决方法也是这样说的),只是没有表达完整,可能会让比较急于解决这个问题的人简单复制却始终解决不了问题 nginx正确的配置: 1、如果是在根目录则配置如下 location / { ...

Bootstrap Dual Listbox动态数据实现

效果图如下:  一:需要依赖的文件 <link rel="stylesheet" href="assets/css/bootstrap.min.css" /> <link rel="stylesheet" href="assets/css/bootstrap-duallistbox.min.css" /> <script s...

dotnet 获取程序所在路径的方法

在 dotnet 有很多方法可以获取当前程序所在的路径,但是这些方法获取到的路径有一点不相同,特别是在工作路径不是当前的程序所在的路径的时候 通过下面几个方法都可以拿到程序所在的文件夹或程序文件 AppDomain.CurrentDomain.BaseDirectory 当前程序域寻找 dll 的文件夹 Environment.CurrentDirect...

静态库与动态库

gcc工作流程和编译原理   1. 预处理 gcc -E   2. 编译 gcc -S   3. 汇编 gcc -c   4. 链接 没参数 gcc的参数   -I 指定头文件的路径   -o 指定生成的文件名   -D 在编译的时候给代码定义宏   -O 优化程序 后面跟 0 1 2 3 这是优化等级   -Wall 在程序编译的时候提示警告信息 比如...