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每次Title显示不同的名言
Sep 25 Javascript
js修改地址栏URL参数解决url参数问题
Dec 15 Javascript
jquery控制页面部分刷新的方法
Jun 24 Javascript
Javascript的表单验证-揭开正则表达式的面纱
Mar 18 Javascript
js实现二级导航功能
Mar 03 Javascript
JS html时钟制作代码分享
Mar 03 Javascript
Vue.js 十五分钟入门图文教程
Sep 12 Javascript
Bootstrap 实现表格样式、表单布局的实例代码
Dec 09 Javascript
基于Web Audio API实现音频可视化效果
Jun 12 Javascript
如何在 ant 的table中实现图片的渲染操作
Oct 28 Javascript
JavaScript实现图片合成下载的示例
Nov 19 Javascript
三剑客:offset、client和scroll还傻傻分不清?
Dec 04 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 无限级缓存的类的扩展
2009/03/16 PHP
Windows下部署Apache+PHP+MySQL运行环境实战
2012/08/31 PHP
ThinkPHP关于session的操作方法汇总
2014/07/18 PHP
Linux操作系统安装LAMP环境
2015/06/26 PHP
PHP引用返回用法示例
2016/05/28 PHP
php生成二维码图片方法汇总
2016/12/17 PHP
PHP培训要多少钱
2017/06/06 PHP
jquery text()要注意啦
2009/10/30 Javascript
Javascript在IE或Firefox下获取鼠标位置的代码
2009/12/18 Javascript
关于jquery.validate1.9.0前台验证的使用介绍
2013/04/26 Javascript
jquery利用ajax调用后台方法实例
2013/08/23 Javascript
javaScript array(数组)使用字符串作为数组下标的方法
2013/11/19 Javascript
jquery制作LED 时钟特效
2015/02/01 Javascript
最精简的JavaScript实现鼠标拖动效果的方法
2015/05/11 Javascript
JS鼠标拖拽实例分析
2015/11/23 Javascript
微信小程序 下拉菜单的实现
2017/04/06 Javascript
微信小程序中的swiper组件详解
2017/04/14 Javascript
Angular+Bootstrap+Spring Boot实现分页功能实例代码
2017/07/21 Javascript
深入理解vue.js中$watch的oldvalue与newValue
2017/08/07 Javascript
分享vue.js devtools遇到一系列问题
2017/10/24 Javascript
微信小程序实现的canvas合成图片功能示例
2019/05/03 Javascript
JS sort方法基于数组对象属性值排序
2020/07/10 Javascript
django连接mysql配置方法总结(推荐)
2018/08/18 Python
Python爬虫小技巧之伪造随机的User-Agent
2018/09/13 Python
用python脚本24小时刷浏览器的访问量方法
2018/12/07 Python
python面试题Python2.x和Python3.x的区别
2019/05/28 Python
python监控nginx端口和进程状态
2019/09/06 Python
python使用paramiko实现ssh的功能详解
2020/03/06 Python
导游实习生自荐书
2014/01/28 职场文书
写求职信有什么意义
2014/02/17 职场文书
工程学毕业生自荐信
2014/06/14 职场文书
商场促销活动总结
2014/07/10 职场文书
小学师德师风整改措施
2014/10/27 职场文书
公司放假通知范文
2015/04/14 职场文书
2015年高校辅导员工作总结
2015/04/20 职场文书
Nginx同一个域名配置多个项目的实现方法
2021/03/31 Servers