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

作者:不爱贞子爱爽子 时间:2024-04-29 13:11:10 

环境: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://www.jb51.net/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,使用过程中也是绕了很多圈子,难受。

来源:http://www.cnblogs.com/shuangzikun/p/taotao_vue_post.html

标签:vue,webpack,express,中间件
0
投稿

猜你喜欢

  • CentOS7使用yum安装Golang的超详细步骤

    2024-04-30 10:08:01
  • pytorch中如何设置随机种子

    2021-10-24 06:43:51
  • 解决Git推送错误non-fast-forward的方法

    2022-09-28 11:07:49
  • Linux下创建Postgresql数据库的方法步骤

    2024-01-29 09:29:19
  • JavaScript对象的property属性详解

    2024-05-05 09:22:57
  • JavaScript 中的 setAttribute

    2008-08-18 13:08:00
  • vue 实现setInterval 创建和销毁实例

    2024-05-09 15:26:14
  • Python实现矩阵转置的方法分析

    2023-07-03 21:56:46
  • 为你总结一些php系统类函数

    2023-11-15 02:22:35
  • python pandas写入excel文件的方法示例

    2022-02-27 05:04:14
  • Python图像处理之图像清晰度评价

    2021-12-22 13:58:44
  • aspjpeg组件asp代码实例使用详解

    2008-12-14 10:33:00
  • 用python监控服务器的cpu,磁盘空间,内存,超过邮件报警

    2023-04-22 07:13:38
  • 详解java调用ffmpeg转换视频格式为flv

    2024-01-19 03:13:11
  • 关于浏览器地址栏的小图标favicon.ico制作

    2010-03-07 15:57:00
  • JS+CSS实现仿雅虎另类滑动门切换效果

    2024-04-17 10:34:55
  • Python实现复制文档数据

    2022-07-15 02:39:32
  • JavaScript Event学习第四章 传统的事件注册模型

    2024-05-09 10:38:04
  • Anaconda下安装mysql-python的包实例

    2024-01-25 08:04:29
  • ASP分页类(支持多风格变换)

    2011-04-08 10:39:00
  • asp之家 网络编程 m.aspxhome.com