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 相关文章推荐
javascript转换字符串为dom对象(字符串动态创建dom)
May 10 Javascript
Jquery知识点一 Jquery的ready和Dom的onload的区别
Jan 15 Javascript
圣诞节Merry Christmas给博客添加浪漫的下雪效果基于jquery实现
Dec 27 Javascript
用jquery统计子菜单的条数示例代码
Oct 18 Javascript
jQuery实现两个select控件的互移操作
Dec 22 Javascript
Angular4表单验证代码详解
Sep 03 Javascript
使用Vuex实现一个笔记应用的方法
Mar 13 Javascript
详解微信小程序文件下载--视频和图片
Apr 24 Javascript
layerui代码控制tab选项卡,添加,关闭的实例
Sep 04 Javascript
layui动态加载多表头的实例
Sep 05 Javascript
vue使用recorder.js实现录音功能
Nov 22 Javascript
JS画布动态实现黑客帝国背景效果
Nov 08 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
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
2007/05/03 PHP
基于pear auth实现登录验证
2010/02/26 PHP
php输出指定时间以前时间格式的方法
2015/03/21 PHP
php调用自己java程序的方法详解
2016/05/13 PHP
Javascript写了一个清除“logo1_.exe”的杀毒工具(可扫描目录)
2007/02/09 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
jQuery中:radio选择器用法实例
2015/01/03 Javascript
javascript实现控制文字大中小显示
2015/04/28 Javascript
jQuery判断多个input file 都不能为空的例子
2015/06/23 Javascript
使用javascript将时间转换成今天,昨天,前天等格式
2015/06/25 Javascript
JS截取字符串实例详解
2015/11/24 Javascript
javascript关于继承解析
2016/05/10 Javascript
AngularJS 视图详解及示例代码
2016/08/17 Javascript
微信小程序 网络API Websocket详解
2016/11/09 Javascript
JSON字符串和JSON对象相互转化实例详解
2017/01/05 Javascript
原生javascript移动端滑动banner效果
2017/03/10 Javascript
JavaScript 数据类型详解
2017/03/13 Javascript
整理一些最近经常遇到的前端面试题
2017/04/25 Javascript
JS函数节流和函数防抖问题分析
2017/12/18 Javascript
vue实现双向绑定和依赖收集遇到的坑
2018/11/29 Javascript
js实现无缝轮播图插件封装
2020/07/31 Javascript
Python中实现的RC4算法
2015/02/14 Python
python2.7读取文件夹下所有文件名称及内容的方法
2018/02/24 Python
django基于存储在前端的token用户认证解析
2019/08/06 Python
python中with语句结合上下文管理器操作详解
2019/12/19 Python
分享8款纯CSS3实现的搜索框功能
2017/09/14 HTML / CSS
关于CSS Tooltips(鼠标经过时显示)的效果
2013/04/10 HTML / CSS
解析html5 canvas实现背景鼠标连线动态效果代码
2019/06/17 HTML / CSS
美国运动鞋类和服装零售连锁店:Shoe Palace
2019/08/13 全球购物
同学会邀请书大全
2014/01/12 职场文书
艺术设计专业个人求职信
2014/04/10 职场文书
党的群众路线对照检查材料(个人)
2014/09/24 职场文书
2014年少先队工作总结
2014/12/03 职场文书
年终奖金发放管理制度,中小企业适用,拿去救急吧!
2019/07/12 职场文书
《童年》读后感(三篇)
2019/08/27 职场文书
python函数的两种嵌套方法使用
2022/04/02 Python