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类和继承 this属性使用说明
Sep 03 Javascript
JavaScript 大数据相加的问题
Aug 03 Javascript
JavaScript NaN和Infinity特殊值 [译]
Sep 20 Javascript
jquery用offset()方法获得元素的xy坐标
Sep 06 Javascript
js中数组排序sort方法的原理分析
Nov 20 Javascript
js带前后翻页的图片切换效果代码分享
Sep 08 Javascript
javascript同步服务器时间和同步倒计时小技巧
Sep 24 Javascript
Bootstrap提示框效果的实例代码
Jul 12 Javascript
Angularjs使用过滤器完成排序功能
Sep 20 Javascript
vue单文件组件lint error自动fix与styleLint报错自动fix详解
Jan 08 Javascript
记一次vue-webpack项目优化实践详解
Feb 17 Javascript
js实现轮播图效果 z-index实现轮播图
Jan 17 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/02/10 PHP
7个鲜为人知却非常实用的PHP函数
2015/07/01 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
动态调用css文件——jquery的应用
2007/02/20 Javascript
JS实现随机数生成算法示例代码
2013/08/08 Javascript
js有序数组的连接问题
2013/10/01 Javascript
js实现幻灯片播放图片示例代码
2013/11/07 Javascript
JavaScript中的console.log()函数详细介绍
2014/12/29 Javascript
js+canvas绘制矩形的方法
2016/01/28 Javascript
jQuery悬停文字提示框插件jquery.tooltipster.js用法示例【附demo源码下载】
2016/07/19 Javascript
用JavaScript和jQuery实现瀑布流
2017/03/19 Javascript
常见的浏览器Hack技巧整理
2017/06/29 Javascript
基于JS抓取某高校附近共享单车位置 使用web方式展示位置变化代码实例
2019/08/27 Javascript
js实现图片无缝循环轮播
2019/10/28 Javascript
js数据类型转换与流程控制操作实例分析
2019/12/18 Javascript
js实现购物车商品数量加减
2020/09/21 Javascript
Vue仿百度搜索功能
2020/12/28 Vue.js
[47:43]Alliance vs KG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Python不使用int()函数把字符串转换为数字的方法
2018/07/09 Python
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/26 Python
使用Python制作自动推送微信消息提醒的备忘录功能
2018/09/06 Python
对python实现二维函数高次拟合的示例详解
2018/12/29 Python
python+selenium实现简历自动刷新的示例代码
2019/05/20 Python
在CentOS7下安装Python3教程解析
2020/07/09 Python
美国汽车轮胎和轮毂销售网站:Tire Rack
2018/01/11 全球购物
英国豪华针织品牌John Smedley的在线销售商:The Outlet by John Smedley
2018/04/08 全球购物
Snapfish爱尔兰:在线照片打印和个性化照片礼品
2018/09/17 全球购物
北美Newegg打造的全球尖货海购平台:tt海购
2018/09/28 全球购物
King Apparel官网:英国街头服饰品牌
2019/09/05 全球购物
Linux操作面试题
2015/02/11 面试题
消防战士优秀事迹材料
2014/02/13 职场文书
企业仓管员岗位职责
2014/06/15 职场文书
学生会竞选演讲稿纪检部
2014/08/25 职场文书
法院干警四风问题个人对照检查材料思想汇报
2014/10/07 职场文书
2015年小学生国庆节演讲稿
2015/07/30 职场文书
JavaScript原型链中函数和对象的理解
2022/06/16 Javascript