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。(這里需要一個滑稽的表情)

 

好了,口水話太多,干貨也就一點,還不知道下次更博是啥時候,有點小失落,不過到時候應該是小激動吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM