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与跨域代理的三两事的主要内容,如果未能解决你的问题,请参考以下文章

js之Ajax与跨域

当jsonp劫持遇到POST三两事

nodejs 代理 解决开发环境跨域问题

jquery .getJSON 跨域请求 报 Url错误 。callback=?用与跨域的参数,急啊 高手帮忙解决一下。

关于字体图标的三两事

Nodejs代理解决开发环境下跨域问题