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表单数据的正确方法感到困惑。(或者如果使用了参数,则是body中的一个特定元素)。然而,在我上面的示例中,body从未被填充,并且在myDto
未定义的情况下调用该方法,即使将其类型更改为字符串并简单地在POST的主体中传递一个键/值对也会使其未定义。
在Nest中处理POST主体的正确方法是什么?
3条答案
按热度按时间dauxcl2d1#
Kamil Mysliwiec关于
Content-Type
的评论是解决方案。另外,请记住将
Content-Type
请求头设置为application/json
。gojuced72#
以防有人绊倒我的问题。我也有这个问题,但对我来说,它是在服务器设置在
main.ts
。我将此代码设置为包括一个ssl证书,以便与https一起使用,但仅限于生产环境中。
但显然创建一个带有
null
选项的服务器会破坏它。所以我把它改成这样,因为它可以和undefined一起工作
我也可以这样做,因为我不知道将选项设置为undefined是否安全
希望这对有类似问题的人有帮助
plicqrtu3#
另外,确保它是一个Post请求,而不是get。