_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
が未定義で呼び出されます。タイプを文字列に変更して、my POSTの本文に単一のキー/値のペアを渡すだけでも、未定義のままになります。
NestでPOST bodyを処理する正しい方法は何ですか?
Kamil MysliwiecのContent-Type
に関するコメントが解決策でした。
また、
Content-Type
リクエストヘッダーをapplication/json
に設定することも忘れないでください。