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 相关文章推荐
[对联广告] JS脚本类
Aug 27 Javascript
&amp;lt;script defer&amp;gt; defer 是什么意思
May 10 Javascript
JS 获取span标签中的值的代码 支持ie与firefox
Aug 24 Javascript
使用jQuery内容过滤选择器选择元素实例讲解
Apr 18 Javascript
web网页按比例显示图片实现原理及js代码
Aug 09 Javascript
JS实现选项卡实例详解
Nov 17 Javascript
Bootstrap每天必学之媒体对象
Nov 30 Javascript
JavaScript实现大图轮播效果
Jan 11 Javascript
Web 开发中Ajax的Session 超时处理方法
Jan 19 Javascript
Vue入门之animate过渡动画效果
Apr 08 Javascript
JavaScript中判断为整数的多种方式及保留两位小数的方法
Sep 09 Javascript
JavaScript继承的三种方法实例
May 12 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实例分享之通过递归实现删除目录下的所有文件详解
2014/05/15 PHP
php创建桌面快捷方式实现方法
2015/12/31 PHP
PHP获取不了React Native Fecth参数的解决办法
2016/08/26 PHP
PHP获取链表中倒数第K个节点的方法
2018/01/18 PHP
lnmp安装多版本PHP共存的方法详解
2018/08/02 PHP
使用JS操作页面表格,元素的一些技巧
2007/02/02 Javascript
广告切换效果(缓动切换)
2009/05/27 Javascript
ASP.NET jQuery 实例9  通过控件hyperlink实现返回顶部效果
2012/02/03 Javascript
javascript当中的代码嗅探扩展原生对象和原型(prototype)
2013/01/11 Javascript
js匿名函数的调用示例(形式多种多样)
2014/08/20 Javascript
JavaScript中textRange对象使用方法小结
2015/03/24 Javascript
JavaScript操作XML/HTML比较常用的对象属性集锦
2015/10/30 Javascript
jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法
2015/11/25 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
JavaScript缓冲运动实现方法(2则示例)
2016/01/08 Javascript
jQuery针对input的class属性写了多个值情况下的选择方法
2016/06/03 Javascript
JS实现的幻灯片切换显示效果
2016/09/07 Javascript
JavaScript数据结构之二叉树的查找算法示例
2017/04/13 Javascript
MUI顶部选项卡的用法(tab-top-webview-main)详解
2017/10/08 Javascript
Bootstrap table使用方法汇总
2017/11/17 Javascript
[47:53]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#2COL VS Spirit
2016/03/02 DOTA
Python中的匿名函数使用简介
2015/04/27 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
2017/12/12 Python
浅谈flask中的before_request与after_request
2018/01/20 Python
python+opencv实现霍夫变换检测直线
2020/10/23 Python
python 协程 gevent原理与用法分析
2019/11/22 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
2020/11/24 Python
CSS3中的Transition过度与Animation动画属性使用要点
2016/05/20 HTML / CSS
Finishline官网:美国一家领先的运动品牌鞋类、服装零售商
2016/07/20 全球购物
西班牙太阳镜品牌:Hawkers
2018/03/11 全球购物
中科创达面试题
2016/12/28 面试题
树转促学习心得体会
2014/09/10 职场文书
2014年班务工作总结
2014/12/02 职场文书
中小企业员工手册范本
2015/05/14 职场文书
英语专业毕业论文答辩开场白
2015/05/27 职场文书
Python序列化模块JSON与Pickle
2022/06/05 Python