1. 实现效果

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

  1. this.apiGet('/users', {})
  2. .then((res) => {
  3. console.log(res)
  4. }, (err) => {
  5. console.log(err)
  6. })

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

2.1 安装axios

  1. cnpm install axios --save

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

引入

  1. const webpack = require('webpack')

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

  在module.exports之前插入代码

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

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

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

2.3 配置main.js 文件

  1. import axios from 'axios'
  2. axios.defaults.baseURL = HOST
  3. window.axios = axios
  4. window.HOST = HOST
  5.  
  6. const bus = new Vue()
  7. window.bus = bus

3. 实现步骤二之封装axios

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

  1. const apiMethods = {
  2. methods: {
  3. apiGet(url, data) {
  4. return new Promise((resolve, reject) => {
  5. axios.get(url, data).then((response) => {
  6. resolve(response.data)
  7. }, (response) => {
  8. reject(response)
  9. console.log(response)
  10. bus.$message({
  11. message: '请求超时,请检查网络',
  12. type: 'warning'
  13. })
  14. })
  15. })
  16. },
  17. apiPost(url, data) {
  18. return new Promise((resolve, reject) => {
  19. axios.post(url, data, {
  20. headers: {
  21. 'Content-Type': 'application/json'
  22. }
  23. }).then((response) => {
  24. resolve(response.data)
  25. }).catch((response) => {
  26. console.log('f', response)
  27. resolve(response)
  28. bus.$message({
  29. message: '请求超时,请检查网络',
  30. type: 'warning'
  31. })
  32. })
  33. })
  34. }
  35. }
  36. }
  37.  
  38. export default apiMethods

3.2 文件引入

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

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

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

  1. mixins: [http]

3.3 方法调用

  1. this.apiGet('/index.php/api/v1/goods/list', {
  2. params: {
  3. property_name: '秒杀'
  4. }
  5. })
  6. .then((res) => {
  7. if(res.code == ){
  8. this.hotListDate = res.result;
  9. }else{
  10. this.$message.error(res.message);
  11. }
  12. }, (err) => {
  13. console.log(err)
  14. });

post

  1. this.apiPost('/index.php/api/v1/user/login', {
  2. mobile : this.form.phone,
  3. password : this.form.password
  4. })
  5. .then((res) => {
  6. if(res.code == ){
  7.  
  8. }else{
  9. this.$message.error(res.message);
  10. }
  11. }, (err) => {
  12. console.log(err)
  13. });

Vue: axios 请求封装及设置默认域名前缀 (for Vue 2.0)的更多相关文章

  1. VUE axios请求 封装 get post Http

    创建httpService.js 文件 import axios from 'axios'; import { Loading , Message } from 'element-ui'; impor ...

  2. vue axios 请求带token设置

    API axios.js import axios from "axios"; let AUTH_TOKEN=(function(){ return localStorage.ge ...

  3. vue axios 请求本地接口端口不一致出现跨域设置代理

    首先在config下面的index.js,设置跨域代理 在axios请求的时候     用'/api/' 替代baseURL 最重要的就是设置完必须重新 npm run dev 否则不生效

  4. Vue Axios 的封装使用

    目录 Axios 说明 安装 Axios 请求配置 响应结构 常用请求方法 默认值配置 全局的 请求配置项 自定义实例默认值 配置的优先顺序 拦截器 个人完整 axios 配置 Axios 说明 Ax ...

  5. axios请求封装和异常统一处理

    前端网络请求封装前端采用了axios来处理网络请求,为了避免在每次请求时都去判断各种各样的网络情况,比如连接超时.服务器内部错误.权限不足等等不一而足,我对axios进行了简单的封装,这里主要使用了a ...

  6. vue axios接口封装、Promise封装、简单的axios方法封装、vue接口方法封装、vue post、get、patch、put方法封装

    相信大家在做前后端数据交互的时候都会给请求做一些简单的封装就像之前封装ajax方法一样axios的封装也是一样的简单下面这个就是封装的axios的方法,require.js import axios ...

  7. 10. vue axios 请求未完成时路由跳转报错问题

    axios 请求未完成时路由跳转报错问题 前两天项目基本功能算是完成了,在公司测试时遇到了遇到了一个问题,那就是在请求未完成时进行路由跳转时会报错,想了几种办法来解决,例如加loading,请求拦截, ...

  8. vue axios请求/响应拦截器

    // main.js中配置 // 引入 axios import Axios from 'axios' // 这时候如果在其它的组件中,是无法使用 axios 命令的. // 但如果将 axios 改 ...

  9. vue axios 请求 https 的特殊处理

    最近遇到自签发的CA证书,在前端axios请求https请求时,无法自动加载证书. 解决方法:将无法加载的请求在浏览器新窗口手动加载,选择继续连接. 重新加载,问题解决. 根本原因:因为自签发证书,浏 ...

随机推荐

  1. hdu_1213_How Many Tables_201403091126

    How Many Tables Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  2. Java排序算法之冒泡、选择、插入、快速

    JavaSort Java经典排序算法代码 2018-1-26更新:冒泡排序,选择排序,插入排序,快速排序 1. 冒泡排序 特点:效率低,实现简单 思想(从小到大排): 第1个数和第2个数比较,如果第 ...

  3. Struts2—Action

    二.命名空间namespace ·命名空间namespace须要放在相应的package下 ·Namespace必须以"/开头". ·Result的name是"succe ...

  4. C++ Primer 学习笔记_5_变量和基本类型(续2)

     变量和基本类型 七.枚举 枚举不但定义了整数常量集,并且还把它们聚集成组. 枚举与简单的const常量相比孰优孰劣, 通过以下一段代码. 一看便知: enum {input, output, a ...

  5. 【LeetCode OJ 232】Implement Queue using Stacks

    题目链接:https://leetcode.com/problems/implement-queue-using-stacks/ 题目:Implement the following operatio ...

  6. DM8168 IPNC Boa移植

    1.交叉编译openssL 下载openssL-1.0.0.tar.gz在虚拟机下进行交叉编译,生成libcrypto.a及libssl.a.将这两个文件复制到DVRRDK_03.00.00.00/b ...

  7. gradle打包android (实现外部导入签名文件、多渠道打包、导入ant脚本)

    近期一直在做android自己主动打包,之前已经完毕了用纯命令行的形式打包.原生态ant脚本打包.和基于android的SDK的打包.而且实现了多渠道打包,后来同事推荐了gradle,网上的资料说gr ...

  8. @ConfigurationProperties注解

    @Value获取值和@ConfigurationProperties获取值比较 |            | @ConfigurationProperties | @Value | | ------- ...

  9. WebView 用法总结

    1.AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出 Web page not available 错误. ...

  10. PCB 生产周期计算逻辑与代码实现

    PCB生产周期计算逻辑: 代码实现: 调用代码: getWeek(DateTime.Now.Date, ); 周期计算逻辑: /// <summary> /// 获取周期 /// < ...