详解vue+webpack+express中间件接口使用


Posted in Javascript onJuly 17, 2018

环境:vue 2.9.3; webpack

目的:接口的调用

跨域方式:

1、express中间的使用

2、nginx代理

3、谷歌浏览器跨域设置

--------------------------------------------分割线---------------------------------------------

express中间件---不推荐

原理:本地代码请求->express中间件(处理,添加headers后转发)->服务器

express中间件 medical

详解vue+webpack+express中间件接口使用

本地代码文件目录 pacs

详解vue+webpack+express中间件接口使用

#########配置接口

在服务器中间件配置 medical/routes/home.js 没有需要新建home.js // 哪个文件使用就可以名字命名 这里就是home页面的接口

home.js

var express = require('express');
var router = express.Router();
var http = require("ykt-http-client");  // 中间件的客户端 参数存放在req.bdoy里面
/* GET users listing. */
var comm = require('../public/js/constant'); // 这里面是定义服务器的地址
var ip = comm.IP;
const IP = comm.IP;

router.get('/', function (req, res, next) {
 res.send('respond with a resource');
});
// 获取频道
router.post('/aa', function (req, res) {
 http.post(ip + 'aaaa', req.body).then((data) => {
 //console.log(JSON.stringify(data))
 res.send(data);
 })
});
// 主页  这就是要用到的接口
router.post('/main', function (req, res) {
 http.post(IP+'/xhhms/rest/interfacesLoginController/getMenu', req.body ,req.headers).then((data) => {
  console.log(IP+'/xhhms/rest/interfacesLoginController/getMenu');
  res.send(data);
 })
});

上面的需要定义constant.js的ip

详解vue+webpack+express中间件接口使用

类似这样定义即可。

#########服务器中间的app.js里面引用

添加var home = require('./routes/home');

然后使用 app.use('/home', home);

######这样就ok了,就可以调用这个接口了

createded() {
 this.getMune();
},
methods:{
 getMune () {
 var params=new Object();
 axios.post(this.ip + '/home/main', params, {
  headers: {
  'X-AUTH-TOKEN': this.token // 这里用到了登录用的token ,还需要在下面配置
  }
 }).then((res) => {
  var data = res.data;
  if (!!data) {
  console.log(data);
  localStorage.setItem('nume', JSON.stringify(data.data[0].children));
  } else {
  return false;
  }
 }, (err) => {
  console.log(err);
 })
 }
}

##### 因为上面用到了header里面的X-AUTH-TOKEN,需要修改中间件的配置文件,如果不用服务器中间件的调用的直接添加表头即可。

1、当前项目的传递方式

本地代码(pacs)----------->服务器中间件(web)------------>服务器

相当于多用了一层,中间层主要用来解决跨域等其他问题(却显得累赘)。

详解vue+webpack+express中间件接口使用

如上图,传递的参数存放在req.body里面,传递的header存放在req.headers里面,我们请求接口后就把req传递到

详解vue+webpack+express中间件接口使用

ykt-http-client里面,目录是在medical/node_modules/ykt-http-client/index.js里面
如果只是传递参数的话就没有问题,因为原来的脚本里面默认是吧req.body传递过去的,但是却没有req.headers保存的参数,所以需要修改下当前的index.js文件

详解vue+webpack+express中间件接口使用

详解vue+webpack+express中间件接口使用

这样的话,如果请求里面发现了headers参数就会传递到服务器里面,才能达到目的。

nginx代理---不推荐

原理和中间大同小异,也是通过转发的方式。

谷歌浏览器跨域---推荐

参考网址:https://3water.com/softjc/625598.html 进行跨域后

直接通过vue-resource进行请求即可。

首先安装vue-resource

cnpm install vue-resource --save

然后在src/main.js里面引入

import VueResource from 'vue-resource';
Vue.use(VueResource);
Vue.http.interceptors.push((request, next) => {
 request.headers.set('X-AUTH-TOKEN', localStorage.getItem("token"))
 // request.headers.set('Access-Control-Allow-Origin', '*');
 // request.headers.set('Access-Control-Allow-Headers', 'Content-Type');
 // request.headers.set('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');
 request.headers.set('Content-Type', 'application/json')
 //console.log(request.headers)
 next(response => {
 // console.log(response)
 return response;
 })
})

###由于使用了浏览器跨域设置,这里面不需要设置什么。

###使用的话直接在各个位置使用即可

var params=new Object(); // 定义的参数
  params.id = '1; // 设置id=1
 this.$http.post(this.ip + '/xhhms/rest/interRemoteReportController/v1/getKnowledge', params, {
  headers: {
  'X-AUTH-TOKEN': this.token // 定义的表头 根据需要自行添加
  }
 }).then((res) => {
  var data = JSON.parse(res.data);
  if (!!data&&data.status=="1") {
  // $.fn.zTree.init($("#shuyuSelect"), this.shuyusetting, data.data);
  } else {
  return false;
  }
 }, (err) => {
  console.log(err);
 });

----由于刚刚接触vue,使用过程中也是绕了很多圈子,难受。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js+FSO遍历文件夹下文件并显示
Mar 07 Javascript
js 加载时自动调整图片大小
May 28 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
Mar 28 Javascript
javascript操作excel生成报表全攻略
May 04 Javascript
详谈JavaScript 匿名函数及闭包
Nov 14 Javascript
javascript常用的方法分享
Jul 01 Javascript
ES6所改良的javascript“缺陷”问题
Aug 23 Javascript
JS动态添加的div点击跳转到另一页面实现代码
Sep 30 Javascript
vue父组件点击触发子组件事件的实例讲解
Feb 08 Javascript
vue中子组件调用兄弟组件方法
Jul 06 Javascript
AngularJS 监听变量变化的实现方法
Oct 09 Javascript
浅谈vue中resetFields()使用注意事项
Aug 12 Javascript
微信小程序实现默认第一个选中变色效果
Jul 17 #Javascript
Vue2.X 通过AJAX动态更新数据
Jul 17 #Javascript
浅谈Angularjs中不同类型的双向数据绑定
Jul 16 #Javascript
微信小程序实现循环动画效果
Jul 16 #Javascript
mpvue 如何使用腾讯视频插件的方法
Jul 16 #Javascript
Vue实现自定义下拉菜单功能
Jul 16 #Javascript
vue实现城市列表选择功能
Jul 16 #Javascript
You might like
php实现网站插件机制的方法
2009/11/10 PHP
php 注释规范
2012/03/29 PHP
ThinkPHP CURD方法之page方法详解
2014/06/18 PHP
php中preg_match的isU代表什么意思
2015/10/01 PHP
laravel ORM关联关系中的 with和whereHas用法
2019/10/16 PHP
javascript iframe中打开文件,并检测iframe存在否
2008/12/28 Javascript
setTimeout与setInterval在不同浏览器下的差异
2010/01/24 Javascript
JQuery扩展插件Validate—4设置错误提示的样式
2011/09/05 Javascript
javascript解析json数据的3种方式
2014/05/08 Javascript
javascript使用window.open提示“已经计划系统关机”的原因
2014/08/15 Javascript
javascript实现复选框超过限制即弹出警告框的方法
2015/02/25 Javascript
JavaScript限定图片显示大小的方法
2015/03/11 Javascript
javascript结合Flexbox简单实现滑动拼图游戏
2016/02/18 Javascript
vue-resource 拦截器(interceptor)的使用详解
2017/07/04 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
Node.js API详解之 assert模块用法实例分析
2020/05/26 Javascript
在vue中axios设置timeout超时的操作
2020/09/04 Javascript
[00:02]DOTA2新版本使用PA至宝后暴击展示
2014/11/19 DOTA
Python中实现结构相似的函数调用方法
2015/03/10 Python
深入浅析Python中的迭代器
2019/06/04 Python
Python统计分析模块statistics用法示例
2019/09/06 Python
Python装饰器实现方法及应用场景详解
2020/03/26 Python
python 已知平行四边形三个点,求第四个点的案例
2020/04/12 Python
python matplotlib.pyplot.plot()参数用法
2020/04/14 Python
美丽乡村建设实施方案
2014/03/23 职场文书
教师党员一句话承诺
2014/03/28 职场文书
团委书记的竞聘演讲稿
2014/04/24 职场文书
入党综合考察材料
2014/06/02 职场文书
销售口号大全
2014/06/11 职场文书
2015元旦家电促销活动策划方案
2014/12/09 职场文书
教师个人事迹材料
2014/12/17 职场文书
家装电话营销开场白
2015/05/29 职场文书
遗失证明范文
2015/06/19 职场文书
钓鱼岛事件感想
2015/08/11 职场文书
2016年党员学习廉政准则心得体会
2016/01/20 职场文书
2019年教师节活动策划方案
2019/09/09 职场文书