express-gateway - 在策略中访问 req.body 的最佳方式
问题描述
我目前正在开发一个实现 oauth 解决方案的自定义插件。我决定实施一个适当的策略,将传入的登录帖子转发到外部服务。因此,我必须访问请求的主体(属性 req.body),这只有在所需的主体解析器启用为 express - 中间件时才有可能。不幸的是,我找不到在网关应用程序中启用正文解析的舒适方法。因此,我通过注册一个正确的路由来访问底层的 expressapp 对象来解决这个问题。
pluginContext.registerGatewayRoute(app => { app.use(express.json()); }
我不想通过简单地注册路由来替换策略,因为我没有找到将其他策略(例如:CORS、RATE LIMITER ...)应用于此路由的方法。
如果我监督某些事情,请告诉我,并且有一种更简单的方法可以启用正文解析。
解决方案
是的,使用“registerGatewayRoute”会将中间件应用于 EG 中的每条路由。您可以做的是创建一个正文解析器策略。EG 中的策略只是 ExpressJS 中间件的包装器,所以
所以正文解析器策略可以包含类似的代码
{
name: 'bodyparser',
policy: (actionParams) => express.json()
}
https://www.express-gateway.io/docs/plugins/policy-development/
现在只需将此策略添加为管道中的第一个策略,它应该为通过该管道的所有路由提供 req.body
推荐阅读
- svn - svn: E200009: 目标必须是工作副本路径
- android - 暗模式下奇怪的错误颜色文本撰写
- javascript - 通过从 2D 矩阵的周围值进行插值来替换任何 0 值
- python - 带有 PyQt5 的 user32.SetWindowCompositionAttribute 导致 ctypes.ArgumentError
- r - 将数据框更改为 R 中的 sf 对象,因此可以通过 tmap 绘制
- python - 为什么 vscode 想用 gcc 运行 python 脚本?
- solr - solr 8 中的查询时间增加
- php - WordPress主题目录问题
- flutter - 如何在 Flutter 中使用键盘动作从一个 TextField 跳转到另一个?
- selenium - 同一步骤定义中不同数据的黄瓜数据参数化