首页 > 解决方案 > 在策略中访问 req.body 的最佳方式

问题描述

我目前正在开发一个实现 oauth 解决方案的自定义插件。我决定实施一个适当的策略,将传入的登录帖子转发到外部服务。因此,我必须访问请求的主体(属性 req.body),这只有在所需的主体解析器启用为 express - 中间件时才有可能。不幸的是,我找不到在网关应用程序中启用正文解析的舒适方法。因此,我通过注册一个正确的路由来访问底层的 expressapp 对象来解决这个问题。

 pluginContext.registerGatewayRoute(app => { app.use(express.json()); }

我不想通过简单地注册路由来替换策略,因为我没有找到将其他策略(例如:CORS、RATE LIMITER ...)应用于此路由的方法。

如果我监督某些事情,请告诉我,并且有一种更简单的方法可以启用正文解析。

标签: express-gateway

解决方案


是的,使用“registerGatewayRoute”会将中间件应用于 EG 中的每条路由。您可以做的是创建一个正文解析器策略。EG 中的策略只是 ExpressJS 中间件的包装器,所以

所以正文解析器策略可以包含类似的代码

{
   name: 'bodyparser',
   policy: (actionParams) => express.json()
}

https://www.express-gateway.io/docs/plugins/policy-development/

现在只需将此策略添加为管道中的第一个策略,它应该为通过该管道的所有路由提供 req.body


推荐阅读