Nestjs - 除了Param Decorator,还有另一种获取请求/正文的方法吗?

Posted

技术标签:

【中文标题】Nestjs - 除了Param Decorator,还有另一种获取请求/正文的方法吗?【英文标题】:Nest.js - is there another way to get request/body but by ParamDecorator? 【发布时间】:2019-04-25 16:56:26 【问题描述】:

不知何故,ParamDecorator 看起来一点也不酷。还有其他方法可以获取正文或请求吗?例如。通过函数装饰器还是全局的东西?

@Post('token')
public async createToken(@Body() body: UserLogin): Promise<any> 
  return await this.authService.signIn(body);

不幸的是,这不起作用。

@Post('token')
@Body('body')
public async createToken(body: UserLogin): Promise<any> 
  return await this.authService.signIn(body);

【问题讨论】:

【参考方案1】:

不,如果不对函数参数本身使用装饰器,就无法提取此信息。是什么让你觉得他们“不酷”?通过将它们从函数参数移动到函数,您似乎并没有获得太多收益。

【讨论】:

【参考方案2】:

您可以使用请求对象访问正文

async getPostById(@Req() req, @Res() res) 
   const body = req.body;
   ...

但是这样你可能会问你正在使用装饰器来访问请求对象!

【讨论】:

以上是关于Nestjs - 除了Param Decorator,还有另一种获取请求/正文的方法吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 NestjS 中使用可选的 url 参数

NestJS swagger 生成的文档不显示参数信息

nestjs 有或没有 async/await 有区别吗?

如何在 NestJS 拦截器中获取处理程序路由(对于 Express 和 Fastify)

使用 Schema First 方法和 NestJS 在 Mongoose 中填充查询

如何从控制器在nestjs应用程序中发送错误代码?