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 相关文章推荐
Jquery validation remote 验证的缓存问题解决方法
Mar 25 Javascript
基于Vue.js的表格分页组件
May 22 Javascript
Javascript闭包与函数柯里化浅析
Jun 22 Javascript
vue父组件通过props如何向子组件传递方法详解
Aug 16 Javascript
webpack处理 css\less\sass 样式的方法
Aug 21 Javascript
jQuery实现table表格信息的展开和缩小功能示例
Jul 21 jQuery
vue中使用axios post上传头像/图片并实时显示到页面的方法
Sep 27 Javascript
layui 实现加载动画以及非真实加载进度的方法
Sep 23 Javascript
vue仿淘宝滑动验证码功能(样式模仿)
Dec 10 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
Apr 26 Javascript
Vue.js中Line第三方登录api的实现代码
Jun 29 Javascript
基于ajax实现上传图片代码示例解析
Dec 03 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
3种平台下安装php4经验点滴
2006/10/09 PHP
解析CodeIgniter自定义配置文件
2013/06/18 PHP
简单JS代码压缩器
2006/10/12 Javascript
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
2010/12/25 Javascript
javascript中声明函数的方法及调用函数的返回值
2014/07/22 Javascript
PHP PDO操作总结
2014/11/17 Javascript
Nodejs学习笔记之Stream模块
2015/01/13 NodeJs
Node.js事件驱动
2015/06/18 Javascript
javaScript实现滚动新闻的方法
2015/07/30 Javascript
简单了解Backbone.js的Model模型以及View视图的源码
2016/02/14 Javascript
利用node.js如何创建子进程详解
2017/12/09 Javascript
vue router 跳转后回到顶部的实例
2018/08/31 Javascript
前后端常见的几种鉴权方式(小结)
2019/08/04 Javascript
[40:10]2015国际邀请赛全明星表演赛
2015/08/07 DOTA
介绍Python的Django框架中的静态资源管理器django-pipeline
2015/04/25 Python
python实现简易云音乐播放器
2018/01/04 Python
python批量修改文件编码格式的方法
2018/05/31 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
2018/06/04 Python
python 判断linux进程,并杀死进程的实现方法
2019/07/01 Python
在macOS上搭建python环境的实现方法
2019/08/13 Python
用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)
2020/06/04 Python
python 爬虫如何正确的使用cookie
2020/10/27 Python
HTML5 Canvas入门学习教程
2016/03/17 HTML / CSS
关于老式浏览器兼容HTML5和CSS3的问题
2016/06/01 HTML / CSS
世界上第一个创建了罩杯系统的美国内衣品牌:Maidenform
2019/03/23 全球购物
升职自荐信范文
2013/10/05 职场文书
学生励志演讲稿
2014/01/06 职场文书
开学季活动策划方案
2014/02/28 职场文书
企业安全生产演讲稿
2014/05/09 职场文书
优秀班主任先进事迹材料
2014/12/16 职场文书
发布会邀请函
2015/01/31 职场文书
百年校庆感言
2015/08/01 职场文书
《围炉夜话》110句人生箴言,精辟有内涵,引人深思
2019/10/23 职场文书
python实现过滤敏感词
2021/05/08 Python
Python实现制作销售数据可视化看板详解
2021/11/27 Python
Python实现Excel文件的合并(以新冠疫情数据为例)
2022/03/20 Python