vue设置全局访问接口API地址操作


Posted in Javascript onAugust 14, 2020

在使用vue框架进行前后端分离项目开发时,通常涉及到与后段接口进行交互,平时一般使用比较多的就是用axios来实现调用后段接口,写法一般为

xxx() {
    const _this = this
    axios.get("http://ip:port/xx/xx").then(function (resp) {
          .....//省略
    })
  }

但是有一个比较普遍的问题就是,假如我们后端接口地址改变了,或者是网络地址发生了变化,就需要在上面IP以及端口的位置每一处都需要修改,所以我们需要一个一处设置 处处可用的配置,如下

在src目录下新建interface文件夹,新建index.js文件

//配置全局访问接口地址
let commonUrl = "http://ip:port";
 
let baseUrl = {
  commonUrl
}
export default baseUrl

在main.js中引入上述配置

import api from "./interface/index" Vue.prototype.$api = api.commonUrl

接下来在原axios调用接口的位置稍作修改即可实现正常调用接口了

xx() {
        const _this = this
        axios.get(this.$api + "/xx/xx").then(function (resp) {
            .....
          }
        })
      }

补充知识:vue项目:(全局变量设置与调用)API接口封装 - 代码篇

vue项目,如何将“API接口” 封装为“全局变量” ?

1. API全局配置文件【global.vue文件】

<template>
   <div> </div>   
</template>


<!-- API全局变量 -->
<script>  
  // 本地 接口地址
  const localSrc = 'http://192.168.0.103:8444'; 
  // 线上 接口地址
  const serverSrc = 'http://www.xxxxxx.com:8080/jobs-api';

  export default{
    localSrc,
    serverSrc
  }
</script>

<style>
</style>

2. 全局注册引入文件 【main.js文件】

// 引入API接口文件
import global_ from './components/api/global'//引用文件
Vue.prototype.GLOBAL = global_//挂载到Vue实例上面

3. 如下代码片段:【注释1、注释2、注释3】

methods: {
   ajaxLoginApi: function (form) {   
  var that=this.form; // 放置指针,便于then操作的获取    
  console.log("账号"+that.username+"密码"+that.pwd);

  // var localPath = 'http://192.168.0.103:8444'; 
    // var ecsPath = 'http://www.1688jobs.com:8080/jobs-api/'
    
    var localPath = this.GLOBAL.localSrc; // 本地 接口地址 【注释1】
    var serverPath = this.GLOBAL.serverSrc; // 线上 接口地址【注释2】
    
  axios.post( serverPath + '/login',   // 【注释3】
     {
    // 'userName':'17681135201',
   // 'userPwd':'123456',
      // 'userType':"2"      
    'userName': this.form.username,
   'userPwd': this.form.pwd,
   'userType':"2"
   },
   {
   headers: {
    'Content-Type':'application/json',
    //'Authorization':'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOiI1QUZFRkQ4NTNFNjIwNDIyOEIwNDE3MzdCMDdBNEJCNURDNTBEQjA4OUFCQzBENDM4MDA5RkM4REU4QkMyODkzIiwidXNlck5hbWUiOiIxNzY4MTEzNTIwMSIsInVzZXJBZ2VudCI6Ik1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS82OC4wLjM0NDAuMTA2IFNhZmFyaS81MzcuMzYiLCJleHAiOjE1NTE5MzYzODQsIm5iZiI6MTU1MTkzNDU4NH0.YgRW-Wnlk_Gz64id_jTocH68oj8DuZuI1WyQBmmrt7c'
   }
   },
  )
  .then(function (response) {
      console.log("response="+response);
      console.log("responseheader="+response.headers);
   var reslutData = response; 
      // console.log(reslutData.data.code);  
      // 登录账号和密码 检测
      if (reslutData.data.code == 2006) { // 用户名不存在
       this.$notify.error({
        title: reslutData.data.message,
        duration: 2000
       });
       return false;
      }
      if (reslutData.data.code != 200) { // 登录失败
       this.$notify.error({
        title: reslutData.data.message,
        duration: 2000
       });
       return false;
      } else { // 登录成功

       // 弹框成功提示
       this.$notify({
        title: reslutData.data.message,
        // message: '正在跳转中···',
        type: 'success',
        duration: 2000
       });

       console.log("token=" + reslutData.data.data.token)
       // token写入本地客户端存储
       localStorage.setItem("token",reslutData.data.data.token);
       // token获取本地客户端存储
       // var key = localStorage.getItem("token");
       // console.log("key=" + key)

       // 成功之后执行跳转  this.$router.replace  
       this.$router.replace('/search');

      }
      
   
  }.bind(this))
  .catch(function (error) {
   console.log("请求失败"+error);
  });

  },

以上这篇vue设置全局访问接口API地址操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 经典动画菜单效果代码
Jan 26 Javascript
利用javascript的面向对象的特性实现限制试用期
Aug 04 Javascript
jQuery News Ticker 基于jQuery的即时新闻行情展示插件
Nov 05 Javascript
Extjs中ComboBox加载并赋初值的实现方法
Mar 22 Javascript
图标线性回归斜着移动到指定的位置
Aug 16 Javascript
查看大图功能代码jquery版
Nov 05 Javascript
jquery判断元素是否隐藏的多种方法
May 06 Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
Sep 13 Javascript
微信小程序form表单组件示例代码
Jul 15 Javascript
Vue表单及表单绑定方法
Sep 04 Javascript
深入浅析Vue中mixin和extend的区别和使用场景
Aug 01 Javascript
JS实现打砖块游戏
Feb 14 Javascript
浅谈vue项目,访问路径#号的问题
Aug 14 #Javascript
解决vue单页面应用打包后相对路径、绝对路径相关问题
Aug 14 #Javascript
vue调用本地摄像头实现拍照功能
Aug 14 #Javascript
解决vue axios跨域 Request Method: OPTIONS问题(预检请求)
Aug 14 #Javascript
解决在Vue中使用axios POST请求变成OPTIONS的问题
Aug 14 #Javascript
Vue的Options用法说明
Aug 14 #Javascript
Vue 构造选项 - 进阶使用说明
Aug 14 #Javascript
You might like
PHP实现长文章分页实例代码(附源码)
2016/02/03 PHP
PHP时间处理类操作示例
2018/09/05 PHP
Laravel5.4框架中视图共享数据的方法详解
2019/09/05 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
laravel admin实现分类树/模型树的示例代码
2020/06/10 PHP
Yii使用DbTarget实现日志功能的示例代码
2020/07/21 PHP
for 循环性能比较 提高for循环的效率
2009/03/19 Javascript
JavaScript Event学习第二章 Event浏览器兼容性
2010/02/07 Javascript
js中的值类型和引用类型小结 文字说明与实例
2010/12/12 Javascript
jQuery方法简洁实现隔行换色及toggleClass的使用
2013/03/15 Javascript
JQuery判断HTML元素是否存在的两种解决方法
2013/12/26 Javascript
$.each遍历对象、数组的属性值并进行处理
2014/07/18 Javascript
js实现的简单radio背景颜色选择器代码
2015/08/18 Javascript
基于javascript实现句子翻牌网页版小游戏
2016/03/23 Javascript
jQuery EasyUI 右键菜单--关闭标签/选项卡的简单实例
2016/10/10 Javascript
JS奇技之利用scroll来监听resize详解
2017/06/15 Javascript
微信小程序云开发之使用云函数
2019/05/17 Javascript
简单分析js中的this的原理
2019/08/31 Javascript
vue实现购物车选择功能
2020/01/10 Javascript
vue瀑布流组件实现上拉加载更多
2020/03/10 Javascript
JavaScript实现简单的弹窗效果
2020/05/19 Javascript
[02:29]大剑、皮鞭、女装,这届DOTA2勇士令状里都有
2020/07/17 DOTA
在Python中使用mechanize模块模拟浏览器功能
2015/05/05 Python
Python 中的Selenium异常处理实例代码
2018/05/03 Python
Python3使用pandas模块读写excel操作示例
2018/07/03 Python
使用Windows批处理和WMI设置Python的环境变量方法
2019/08/14 Python
在PyTorch中Tensor的查找和筛选例子
2019/08/18 Python
Python生成并下载文件后端代码实例
2020/08/31 Python
Algenist奥杰尼官网:微藻抗衰老护肤品牌
2017/07/15 全球购物
Under Armour安德玛中国官网:美国高端运动科技品牌
2018/03/09 全球购物
ORACLE十问
2015/04/20 面试题
会计毕业生求职简历的自我评价
2013/10/20 职场文书
创业计划书的内容步骤和要领
2014/01/04 职场文书
房屋出售授权委托书
2014/10/12 职场文书
前台文员岗位职责
2015/02/04 职场文书
社区党务工作总结2015
2015/05/19 职场文书