详解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 相关文章推荐
LazyLoad 延迟加载(按需加载)
May 31 Javascript
javascript放大镜效果的简单实现
Dec 09 Javascript
Javascript中的String对象详谈
Mar 03 Javascript
JavaScript实现按Ctrl键打开新页面
Sep 04 Javascript
JQuery导航菜单选择特效
Apr 11 Javascript
关于javascript的一些知识以及循环详解
Sep 12 Javascript
Angularjs中的页面访问权限怎么设置
Nov 11 Javascript
Javascript刷新页面的实例
Sep 23 Javascript
浅谈vuejs实现数据驱动视图原理
Feb 23 Javascript
vue 详情跳转至列表页实现列表页缓存
Mar 27 Javascript
小程序自定义模板实现吸顶功能
Jan 08 Javascript
详解搭建一个vue-cli的移动端H5开发模板
Jan 17 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程序之die调试法 快速解决错误
2009/09/17 PHP
PHP fastcgi模式上传大文件(大约有300多K)报错
2014/09/28 PHP
通过PHP简单实例介绍文件上传
2015/12/16 PHP
PHP实现支持加盐的图片加密解密
2016/09/09 PHP
php正则提取html图片(img)src地址与任意属性的方法
2017/02/08 PHP
JavaScript入门教程(1) 什么是JS
2009/01/31 Javascript
使用indexOf等在JavaScript的数组中进行元素查找和替换
2013/09/18 Javascript
node.js中的fs.writeSync方法使用说明
2014/12/15 Javascript
js实现简单div拖拽功能实例
2015/05/12 Javascript
很不错的两款Bootstrap Icon图标选择组件
2016/01/28 Javascript
浅析jquery unbind()方法移除元素绑定的事件
2016/05/24 Javascript
EditPlus中的正则表达式 实战(2)
2016/12/15 Javascript
JavaScript使用delete删除数组元素用法示例【数组长度不变】
2017/01/17 Javascript
Vue.js实现实例搜索应用功能详细代码
2017/08/24 Javascript
微信小程序学习笔记之跳转页面、传递参数获得数据操作图文详解
2019/03/28 Javascript
vue实现节点增删改功能
2019/09/26 Javascript
微信小程序 wxParse插件显示视频问题
2019/09/27 Javascript
js实现简单掷骰子小游戏
2019/10/24 Javascript
原生js实现贪食蛇小游戏的思路详解
2019/11/26 Javascript
vue 页面跳转的实现方式
2021/01/12 Vue.js
跟老齐学Python之??碌某?? target=
2014/09/12 Python
python同时给两个收件人发送邮件的方法
2015/04/30 Python
Python实现树的先序、中序、后序排序算法示例
2017/06/23 Python
python版简单工厂模式
2017/10/16 Python
Python 旋转打印各种矩形的方法
2019/07/09 Python
Python range、enumerate和zip函数用法详解
2019/09/11 Python
python实现的按要求生成手机号功能示例
2019/10/08 Python
Python银行系统实战源码
2019/10/25 Python
pymysql的简单封装代码实例
2020/01/08 Python
迷你分体式空调:SoGoodToBuy
2018/08/07 全球购物
Senreve官网:美国旧金山的奢侈手袋品牌
2019/03/21 全球购物
几个判断型的面试题
2012/07/03 面试题
客服实习的个人自我鉴定
2013/10/20 职场文书
2014年大学庆元旦迎新年活动方案
2014/03/09 职场文书
自动化专业毕业生求职信
2014/06/18 职场文书
尊老爱幼演讲稿
2014/09/04 职场文书