NestJSとclass-validatorでPOST時に検証をする

前回DTOを使い任意のデータでPOSTするところまでたどり着いたが、バリデートが上手く動いていなかったので、調査してみた。

目次

class-validatorをインストールした

前回はclass-validatorをインストールしDTOと接続した。

が、結果は前回の記事に書いた通りだった。

なので、バリデートを効くようにしたい。

main.tsにバリデートを読み込む

import { ValidationPipe } from '@nestjs/common';
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.useGlobalPipes(new ValidationPipe());
  await app.listen(3000);
}
bootstrap();

つまりバリデートするという指示が漏れていた。

ただこれだとclass-transformerが足りないと怒られる。

class-transformerをインストールする

npm i --save class-transformer

これで怒られなくなった。

間違った情報をPOSTする

$ curl -d '{"firstName":1111, "lastName":"yamada", "isActive":"string"}' -H "Content-Type: application/json" -X POST http://localhost:3000/sample

{"statusCode":400,"message":["firstName must be a string","
isActive must be a boolean value"],"error":"Bad Request"}

よし、怒られたのでオッケー。

次に読むおすすめ記事

NestJsにおけるMigrationと「synchronize: true」を調べてみた

Windows11に入れたMySQLとNest.Jsを接続し、テーブルを作成する

NestJSでDTO(データ転送用オブジェクト)を使用しCRUD操作を行ってみる

NestJsとMySQLでCRUD操作を行ってみた

LambdaにのせたNestJSでapp.enableCors();を指定しているのにCORSエラーがでたので解消するまでを記録した

この記事に対するコメント

お気軽にコメントを下さい

メールアドレスが公開されることはありません。 が付いている欄は必須項目です