详解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 相关文章推荐
JavaScipt基本教程之JavaScript语言的基础
Jan 16 Javascript
json 实例详细说明教程
Oct 31 Javascript
js 实现无干扰阴影效果 简单好用(附文件下载)
Dec 27 Javascript
javascript的内存管理详解
Aug 07 Javascript
parentElement,srcElement的使用小结
Jan 13 Javascript
原生javascript实现拖动元素示例代码
Sep 01 Javascript
jQuery中addClass()方法用法实例
Jan 05 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
Jun 01 Javascript
简述JavaScript的正则表达式中test()方法的使用
Jun 16 Javascript
Node.js利用断言模块assert进行单元测试的方法
Sep 28 Javascript
JSON字符串操作移除空串更改key/value的介绍
Jan 05 Javascript
vue实现移动端H5数字键盘组件使用详解
Aug 25 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 shell命令合并图片的代码
2011/06/23 PHP
PHP中使用asort进行中文排序失效的问题处理
2014/08/18 PHP
PHP中array_slice函数用法实例详解
2014/11/25 PHP
php跨服务器访问方法小结
2015/05/12 PHP
php异常处理方法实例汇总
2015/06/24 PHP
详解如何在云服务器上部署Laravel
2017/06/30 PHP
Aster vs KG BO3 第一场2.18
2021/03/10 DOTA
JQuery中的ready函数冲突的解决方法
2010/05/17 Javascript
基于JQuery的访问WebService的代码(可访问Java[Xfire])
2010/11/19 Javascript
jQuery 中使用JSON的实现代码
2011/12/01 Javascript
百度地图api应用标注地理位置信息(js版)
2013/02/01 Javascript
获取内联和链接中的样式(js代码)
2013/04/11 Javascript
Javascript基础教程之JavaScript语法
2015/01/18 Javascript
使用Jquery实现每日签到功能
2015/04/03 Javascript
jQuery插件scroll实现无缝滚动效果
2015/04/27 Javascript
javascript巧用eval函数组装表单输入项为json对象的方法
2015/11/25 Javascript
Bootstrap前端开发案例二
2016/06/17 Javascript
理解 Node.js 事件驱动机制的原理
2017/08/16 Javascript
基于打包工具Webpack进行项目开发实例
2018/05/29 Javascript
原生JS实现列表子元素顺序反转的方法分析
2018/07/02 Javascript
javascript实现图片轮播代码
2019/07/09 Javascript
浅谈vuex中store的命名空间
2019/11/08 Javascript
vue element el-transfer增加拖拽功能
2021/01/15 Vue.js
Vue使用Ref跨层级获取组件的步骤
2021/01/25 Vue.js
Sanic框架流式传输操作示例
2018/07/18 Python
TensorFlow2.0:张量的合并与分割实例
2020/01/19 Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
2020/02/15 Python
在keras里面实现计算f1-score的代码
2020/06/15 Python
美国在线打印网站:Overnight Prints
2018/10/11 全球购物
纽约和芝加哥当天送花:Ode à la Rose
2019/07/05 全球购物
多媒体编辑专业毕业生推荐信
2013/11/05 职场文书
市场营销管理毕业生自荐信
2014/03/03 职场文书
武当山导游词
2015/02/03 职场文书
挂职锻炼工作总结2015
2015/05/28 职场文书
python基础之停用词过滤详解
2021/04/21 Python
Python自动化工具之实现Excel转Markdown表格
2022/04/08 Python