详解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 相关文章推荐
使用滤镜设置透明导致 IE 6/7/8/9 解析异常的解决方法
Apr 07 Javascript
表单的焦点顺序tabindex和对应enter键提交
Jan 04 Javascript
select、radio表单回显功能实现避免使用jquery载入赋值
Jun 08 Javascript
cookie.js 加载顺序问题怎么才有效
Jul 31 Javascript
javascript将异步校验表单改写为同步表单
Jan 27 Javascript
js判断手机浏览器操作系统和微信浏览器的方法
Apr 30 Javascript
jQuery获取file控件中图片的宽高与大小
Aug 04 Javascript
JS基于递归实现倒计时效果的方法
Nov 26 Javascript
bootstrapValidator自定验证方法写法
Dec 01 Javascript
JS实现动态修改table及合并单元格的方法示例
Feb 20 Javascript
Vue配置marked链接添加target="_blank"的方法
Jul 19 Javascript
如何利用Node.js与JSON搭建简单的动态服务器
Jun 16 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 parse_url 一个好用的函数
2009/10/03 PHP
php实现数组中出现次数超过一半的数字的统计方法
2018/10/14 PHP
return false;和e.preventDefault();的区别
2010/07/11 Javascript
使用JQuery实现Ctrl+Enter提交表单的方法
2015/10/22 Javascript
JS实现slide文字框缩放伸展效果代码
2015/11/05 Javascript
jQuery实现标题有打字效果的焦点图代码
2015/11/16 Javascript
JavaScript的Backbone.js框架入门学习指引
2016/05/07 Javascript
使用jquery给指定的table动态添加一行、删除一行
2016/10/13 Javascript
微信小程序 增、删、改、查操作实例详解
2017/01/13 Javascript
canvas实现钟表效果
2017/02/13 Javascript
webpack+vue中使用别名路径引用静态图片地址
2017/11/20 Javascript
详解VUE自定义组件中用.sync修饰符与v-model的区别
2018/06/26 Javascript
JavaScript实用代码小技巧
2018/08/23 Javascript
Node对CommonJS的模块规范
2019/11/06 Javascript
javascript设计模式之装饰者模式
2020/01/30 Javascript
vue实现五子棋游戏
2020/05/28 Javascript
vue引入静态js文件的方法
2020/06/20 Javascript
基于vue hash模式微信分享#号的解决
2020/09/07 Javascript
详解template标签用法(含vue中的用法总结)
2021/01/12 Vue.js
[01:17:55]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
Python发送email的3种方法
2015/04/28 Python
Django中使用group_by的方法
2015/05/26 Python
Python图像灰度变换及图像数组操作
2016/01/27 Python
解决python3 urllib 链接中有中文的问题
2018/07/16 Python
浅析Python数字类型和字符串类型的内置方法
2019/12/22 Python
python3检查字典传入函数键是否齐全的实例
2020/06/05 Python
Python configparser模块应用过程解析
2020/08/14 Python
CSS3教程(3):border-color网页边框色彩
2009/04/02 HTML / CSS
澳大利亚最大的百货公司:Myer
2018/12/21 全球购物
学生干部的自我评价分享
2014/01/18 职场文书
应届毕业生简历自我评价
2014/01/31 职场文书
《生命 生命》教学反思
2014/04/19 职场文书
优秀毕业生的求职信
2014/07/21 职场文书
运动会广播稿200字
2014/10/18 职场文书
加班费申请报告
2015/05/15 职场文书
Pycharm远程调试和MySQL数据库授权问题
2022/03/18 MySQL