import { Controller, Post, Body } from '@nestjs/common';
import { MyService } from 'my.service';
import { MyDto } from './dto/my.dto';
@Controller('my-route')
export class MyController {
constructor(private readonly _myService: MyService) {}
@Post()
async myMethod(@Body() myDto: MyDto) {
console.log(myDto); // undefined
return await this._myService.doStuff(myDto.elementOfInterest); // Passes undefined variable into method.
}
}
我对从 Nest 中的 POST 访问正文表单数据的正确方法感到困惑。文档和示例都显示了在参数名称之前简单使用 @Body()
装饰器,该参数将包含正文(如果使用参数,则为正文中的特定元素)。然而在我上面的例子中,主体从未被填充,并且调用方法时 myDto
未定义。即使将其类型更改为字符串并在我的 POST 正文中简单地传递单个键/值对,它仍未定义。
在 Nest 中处理 POST 正文的正确方法是什么?
最佳答案
Kamil Mysliwiec 关于 Content-Type
的评论是解决方案。
Also, keep in mind to set
Content-Type
request header intoapplication/json
.
关于typescript - NestJS - 如何使用@Body() 装饰器访问帖子正文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50082365/