Node 使用express-http-proxy 做api网关的实现

 更新时间:2020年10月15日 09:37:40   作者:愚坤  
这篇文章主要介绍了Node 使用express-http-proxy 做api网关的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

拷贝代码备忘,filter过滤请求,proxyReqOptDecorator重写请求头,代码如下:

var express = require('express');
var proxy = require('express-http-proxy')

var app = express();

app.all('*', function (req, res, next) {
 res.header("Access-Control-Allow-Origin", req.headers.origin);
 res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
 res.header("Access-Control-Allow-Credentials", "true");
 res.header("Content-Type", "application/json;charset=utf-8");
 if (req.method == 'OPTIONS') {
  res.header('Access-Control-Allow-Headers', req.headers['access-control-request-headers']);
  res.send(200); /*让options请求快速返回*/
 }
 else {
  next();
 }
});

// 代码转发
app.use('/ProxySSO', proxy(req => {
 return req.headers.apiurl
}, {
 filter: function (req, res) {

  // 用户名\系统标识\用户权限
  let { systemName, masterName, powers } = req.tokenDecode;
  const { originalUrl } = req;
  const url = originalUrl.replace('/ProxySSO', '').split('?')[0];

  /**
   * 接口权限检查
   * @param {String} url 接口地址
   * @param {Object} powers rbac权限列表
   * @returns {boolean} 是否有权限
   */
  const checkPowers = (url, powers) => {
    //  do something
  }
  const hasPowers = checkPowers(url, powers);
   // 权限判断
  return hasPowers;
 },
 proxyReqOptDecorator: function(proxyReqOpts, srcReq) {
  // header增加masterName 具体按照自己的需求来
  // proxyReqOpts.headers['masterName'] = srcReq.tokenDecode.masterName;
  return proxyReqOpts;
 }
}));

module.exports = app;

到此这篇关于Node 使用express-http-proxy 做api网关的实现的文章就介绍到这了,更多相关Node api网关内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • 利用node.js爬取指定排名网站的JS引用库详解

    利用node.js爬取指定排名网站的JS引用库详解

    最近在学习node.js爬虫,由于 nodejs 强大的异步特性,让我们可以轻松以异步高并发去爬取网站,下面这篇文章主要给大家介绍了关于利用node.js爬取指定排名网站的JS引用库的相关资料,需要的朋友可以参考下。
    2017-07-07
  • Node.js API详解之 module模块用法实例分析

    Node.js API详解之 module模块用法实例分析

    这篇文章主要介绍了Node.js API详解之 module模块用法,结合实例形式分析了Node.js API中module模块基本功能、原理、用法及操作注意事项,需要的朋友可以参考下
    2020-05-05
  • node.js + socket.io 实现点对点随机匹配聊天

    node.js + socket.io 实现点对点随机匹配聊天

    这篇文章主要介绍了node.js + socket.io 实现点对点随机匹配聊天,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • 用nodejs的实现原理和搭建服务器(动态)

    用nodejs的实现原理和搭建服务器(动态)

    下面小编就为大家带来一篇用nodejs的实现原理和搭建服务器(动态)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • 更新Node.js的四种方法小结

    更新Node.js的四种方法小结

    Node.js是一个开放源代码的跨平台JavaScript运行环境,它在不同的平台上都得到了广泛使用和支持,强大的生态系统、持续的更新和不断改进的性能使得Node.js非常受欢迎,然而,更新Node.js仍然是一个必要的过程,本文给大家介绍一些有关如何更新Node.js的方法
    2023-11-11
  • nodejs不用electron实现打开文件资源管理器并选择文件

    nodejs不用electron实现打开文件资源管理器并选择文件

    最近在开发一些小脚本,用 nodejs 实现,其中很多功能需要选择一个/多个文件,或者是选择一个文件夹,这种情况下网上给出的解决方案都是 electron,但是我一个小脚本用 electron 属实有点夸张了,后来转念一想可以通过 powershell 来实现类似的功能,需要的朋友可以参考下
    2024-01-01
  • 在linux中使用包管理器安装node.js

    在linux中使用包管理器安装node.js

    这篇文章主要介绍了在linux中使用包管理器安装node.js的方法以及具体安装过程,非常详细,推荐给大家,有需要的小伙伴参考下吧。
    2015-03-03
  • Nodejs极简入门教程(一):模块机制

    Nodejs极简入门教程(一):模块机制

    这篇文章主要介绍了Nodejs极简入门教程(一):模块机制,本文讲解了模块基础知识、模块的加载、包等内容,需要的朋友可以参考下
    2014-10-10
  • 探索node之事件循环的实现

    探索node之事件循环的实现

    这篇文章主要介绍了探索node之事件循环的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • 在nodejs中创建child process的方法

    在nodejs中创建child process的方法

    这篇文章主要介绍了在nodejs中创建child process的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01

最新评论