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

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

  • 相关阅读:
    Maven常用命令:
    正向代理、反向代理、透明代理
    linux命令ps aux|grep xxx详解
    Java中Comparable和Comparator区别小结
    Java Queue之PriorityQueue
    java读写分离的实现
    CSS颜色名称和颜色值
    使用Access-Control-Allow-Origin解决跨域
    Tomcat 下启用 https:// 访问
    使用Jedis操作redis
  • 原文地址:https://www.cnblogs.com/xuejiangjun/p/10618355.html
Copyright © 2020-2023  润新知