NestJSでDTO(データ転送用オブジェクト)を使用しCRUD操作を行ってみる
nove-b
March 22, 2023
検証ライブラリーをインストール
これは、見出しの通りPOST時に検証してくるライブラリー。
> デコレータおよび非デコレータ ベースの検証の使用を許可します。内部的には、validator.jsを使用して検証を実行します。Class-validator は、ブラウザと node.js プラットフォームの両方で動作します。
ちなみにバージョンは"class-validator": "^0.14.0"←の通り。
データ転送オブジェクトを作成する
データ転送オブジェクト (DTO)とは
アプリケーションで受信するデータ用に適切なデータ構造を作成、検証しやすくするもの。
DTO
を使うことで、リクエスト本文から抽出されるオブジェクトの形状を指定でき、検証の組み込みが容易になるとのこと。
ちなみにDTOは英語名(Data Transfer Object)と日本語読みの略が一致した稀有な例。
DTO をセットアップする
src/sample/dtoにcreate-sample.dto.tsを作成する。ファイルの内容は下記の通り。
上記でフィールドのデータ型が stringorboolean型であるかを確認している。
それぞれのファイルにDTOを読み込む
ファイルのインポートは割愛する。
sample.controller.ts
↓に変更する。
sample.service.ts
↓に変更する。
実際にポストしてみる
データの作成ができていることを確認できた。
ちなみに
Boolean指定のisActiveをstringで送ったらfalseで登録された。
ついでにstring指定の箇所にnumberを送ったらそのままnumberで登録された。
つまりclass-validatorが動いてない。
これは別で調査する。
Discussion in the ATmosphere