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鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
Jan 14 Javascript
利用try-catch判断变量是已声明未声明还是未赋值
Mar 12 Javascript
JavaScript学习笔记之Cookie对象
Jan 22 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
Dec 11 Javascript
AngularJS基础 ng-value 指令简单示例
Aug 03 Javascript
BootStrap学习笔记之nav导航栏和面包屑导航
Jan 03 Javascript
vuejs router history 配置到iis的方法
Sep 20 Javascript
JS拖拽排序插件Sortable.js用法实例分析
Feb 20 Javascript
怎样使你的 JavaScript 代码简单易读(推荐)
Apr 16 Javascript
Cordova(ionic)项目实现双击返回键退出应用
Sep 17 Javascript
原生js实现商品筛选功能
Oct 28 Javascript
PHP读取远程txt文档到数组并实现遍历
Aug 25 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 VS ASP
2006/10/09 PHP
php快速url重写更新版[需php 5.30以上]
2010/04/25 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
2014/04/19 PHP
PHP Session机制简介及用法
2014/08/19 PHP
简单概括PHP的字符串中单引号与双引号的区别
2016/05/07 PHP
PHP Callable强制指定回调类型的方法
2016/08/30 PHP
jQuery .attr()和.removeAttr()方法操作元素属性示例
2013/07/16 Javascript
关闭浏览器窗口弹出提示框并且可以控制其失效
2014/04/15 Javascript
Javascript类型转换的规则实例解析
2016/02/23 Javascript
onclick和onblur冲突问题的快速解决方法
2016/04/28 Javascript
ASP.NET jquery ajax传递参数的实例
2016/11/02 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
jQuery实现按比例缩放图片的方法
2017/04/29 jQuery
nodejs动态创建二维码的方法
2017/08/12 NodeJs
微信小程序实现搜索历史功能
2020/03/26 Javascript
ES6如何用一句代码实现函数的柯里化
2020/01/18 Javascript
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
2020/11/06 Javascript
python友情链接检查方法
2015/07/08 Python
Python实现的单向循环链表功能示例
2017/11/10 Python
解决Pycharm出现的部分快捷键无效问题
2018/10/22 Python
Python日志logging模块功能与用法详解
2020/04/09 Python
Django项目uwsgi+Nginx保姆级部署教程实现
2020/04/19 Python
python如何查看网页代码
2020/06/07 Python
python用Tkinter做自己的中文代码编辑器
2020/09/07 Python
解决python3.6用cx_Oracle库连接Oracle的问题
2020/12/07 Python
H5 video poster属性设置视频封面的方法
2020/05/25 HTML / CSS
Columbia美国官网:美国著名的户外服装品牌
2016/11/24 全球购物
Luxplus丹麦:香水和个人护理折扣
2018/04/23 全球购物
Koral官方网站:女性时尚运动服
2019/04/10 全球购物
Why do we need Unit test
2013/01/03 面试题
营销总经理的岗位职责
2013/12/15 职场文书
新郎新娘答谢词
2015/01/04 职场文书
2015年财务科工作总结范文
2015/05/13 职场文书
学术会议领导致辞
2015/07/29 职场文书
Python源码解析之List
2021/05/21 Python
Apache Hudi集成Spark SQL操作hide表
2022/03/31 Servers