Pipeの利用方法に関するメモ
Pipeは2つのユースケースがある
- transformation:インプットデータを望ましい形式に変更する
- validation:値が有効かどうか判定して、有効であれば変更しないまま通す、もし有効でなければエクセプションエラーを返す
Pipeを利用するところはController
- Pipeはコントローラーレベルで利用する(Patch時、Post時など)
Pipeのtransformメソッドと気にする2つの値
- transform()メソッドは2つの値をもつ
2つの値とは
元から利用できるPipeの機能
機能 | 説明 |
---|---|
ValidationPipe | |
ParseIntPipe | Stringの値を数値型に変換します |
ParseUUIDPipe | UUIDであるかどうかを確かめます |
※注意
これらのbuilt-in Pipeを利用するには`class-validator’ と ‘class-transformer’がインストールされている必要があります
Pipeのスコープ4つ
- method-scoped
- controller-scoped,
- global-scoped
- param-scoped
param-scopeの例
- Paramスコープのパイプは一つのパラメータのバリデーション時に有効
@Post() async create( @Body(new ValidationPipe()) createCatDto: CreateCatDto, ) { this.catsService.create(createCatDto); }
method-scopedの例
- method-scopedの場合は
@UsePipes()
という記載を使います
@Post() @UsePipes(new ValidationPipe()) async create(@Body() createCatDto: CreateCatDto) { this.catsService.create(createCatDto); }
global-scopedの例
- もうここまできたら、
main.ts
に書いてしまいます
async function bootstrap() { const app = await NestFactory.create(AppModule); app.useGlobalPipes(new ValidationPipe()); await app.listen(3000); } bootstrap();