zoukankan      html  css  js  c++  java
  • 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。(这里需要一个滑稽的表情)

    好了,口水话太多,干货也就一点,还不知道下次更博是啥时候,有点小失落,不过到时候应该是小激动吧。

  • 相关阅读:
    LeetCode#191 Number of 1 Bits
    敏捷编程
    过程模型
    磁盘阵列
    RAM和ROM
    cache
    局部性原理
    栈的应用(一)——括号的匹配
    猫狗收养问题
    全局变量和局部变量
  • 原文地址:https://www.cnblogs.com/xuejiangjun/p/10618355.html
Copyright © 2011-2022 走看看