nodejs之mock与跨域代理的三两事
Posted xuejiangjun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodejs之mock与跨域代理的三两事相关的知识,希望对你有一定的参考价值。
emmm...好久没写博客了,都忘了该怎么开始。
那就先说下mockjs。因为一些原因,导致后台接口没有数据,那么我们就开始自己造数据,使用的是比较流行mockjs,根据文档就能简单的配置,然后开始愉快的玩耍了。(真香)
然后某天后台出数据了,又因为某些问题(跨域),导致我又没法愉快的玩耍,嗯,就是这样的,才有了今天这篇博客(口水话)。
使用的是nodejs做跨域代理,非常简单,先贴代码:
1 var express = require(‘express‘); 2 var router = express.Router(); 3 var http = require(‘http‘); 4 5 router.all(‘*‘, function(request, response, next) { //代理了所有请求 6 var content = JSON.stringify(request.body); //转发原味的数据 7 var options = { 8 host: ‘example.com‘, //需要代理的域名或者是ip 9 port: 80, //端口号 10 path: request.path, //路径 11 method: ‘POST‘, //请求代理的方法 12 headers: { //设置一些请求头之类的 13 ‘Content-Type‘: ‘application/json‘, 14 ‘Content-Length‘: content.length 15 } 16 }; 17 //开始做代理转发数据 18 var req = http.request(options, function(res) { 19 var _data = ‘‘; 20 res.on(‘data‘, function(chunk) { 21 _data += chunk; 22 }); 23 res.on(‘end‘, function() { 24 //请求完成之后让response对象返回json 25 response.json(JSON.parse(_data)) 26 }); 27 }); 28 //这个write大概就是发送这个body,以chunk的形式 原文: https://nodejs.org/dist/latest-v10.x/docs/api/http.html response.write(chunk[, encoding][, callback]) 29 req.write(content); 30 //这次代理结束 31 req.end(); 32 });
下面说下为什么这样写,最开始是匹配的所有路由,即:
router.all(‘/path‘, function(request, response, next) { //do something })
后来发现,这样其实太繁琐了,我有多少个接口我就要写多少个‘/path‘,然后我想到了一个*值,这样就匹配到了所有的path,前端发什么,我就代理什么,不管你有没有这个接口,没有当然就报错啦,所以才有上面我的path是request.path。(这里需要一个滑稽的表情)
好了,口水话太多,干货也就一点,还不知道下次更博是啥时候,有点小失落,不过到时候应该是小激动吧。
以上是关于nodejs之mock与跨域代理的三两事的主要内容,如果未能解决你的问题,请参考以下文章
jquery .getJSON 跨域请求 报 Url错误 。callback=?用与跨域的参数,急啊 高手帮忙解决一下。