typescript - NestJS 使用回调实现 express POST 调用
问题描述
我正在尝试在处理 Google Assistant 语音对话的现有服务器中实现 NestJS。我正在从使用 express 的设置转移到带有 Controller 和 Post 装饰器的 NestJS。
在之前的设置中,我使用 express 来处理路由,这将调用一个回调,它接收传入的请求并创建聊天机器人的响应。该设置如下所示:
app.post("/google", this.googleController.callback);
现在我正在尝试使用 NestJS 做同样的事情,但我无法实现相同的结构。
@Controller("google")
export class GoogleController {
public callback: IGoogleEndpoint;
/**
* Constructor
*/
constructor() {
this.callback = dialogflow();
// setup callback
};
@Post()
public Post(@Req() req: Request) {
return this.callback(req.body);
};
在之前的快速设置中,回调将对传入请求执行映射、处理它并为聊天机器人创建响应。这一切都在该回调中完成,因此我正在寻找一种解决方案,允许我将所有传入请求直接引导到回调中。
是否有可能在 NestJS 中创建类似的东西?
解决方案
您可以尝试将req
and发送res
到库的callback
方法,但这里最大的区别在于 Nest 控制器和 Express 路由处理程序如何管理路由。Nest 控制(req, res, next) => {})
了大部分情况下的正常设置(如传统的路由处理程序),因此这就是当前callback
在 Express 应用程序中传递的内容。一个可能的解决方案可能是
@Controller("google")
export class GoogleController {
public callback: IGoogleEndpoint;
/**
* Constructor
*/
constructor() {
this.callback = dialogflow();
// setup callback
};
@Post()
public Post(@Req() req: Request, @Res() res: Response) {
return this.callback(req, res);
};
}
尽管如此,您仍然可能需要找到一种方法来提供有意义的回调,以便当库尝试使用时next()
,它仍然会成功调用。
推荐阅读
- c# - 将 Crystal Reports 与数据集绑定
- php - mysqli_fetch_all 在将数据调用到其他文件时不起作用
- mysql - 什么是 mysql 斗牛士中的“FTS_0000000000002fe2_000000000000694c_INDEX_1.ibd”
- sql-server - 我有患者访问的开始时间和结束时间(在访问表中)。我想为用户(医院团队成员)分配访问
- node.js - 上传前调整图像大小
- python - 将重复数据从行转换为列
- python - 安装恼人的python包中的问题
- reactjs - 我可以在状态中再次使用状态值吗?
- visual-studio - 如何在 Visual Studio 中使用 WebCompiler 缩小多个 JavaScript 文件?
- reactjs - jspdf中的图像质量太差