1
$ npm i --save class-validator class-transformer
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
src/main.ts
// 省略
import { NestFactory } from '@nestjs/core';
import { NestExpressApplication } from '@nestjs/platform-express';
+import { ValidationPipe } from '@nestjs/common';
import * as expressLayouts from 'express-ejs-layouts';
import { AppModule } from './app.module';
// 省略
app.setViewEngine('ejs');
app.use(expressLayouts);
+ app.useGlobalPipes(new ValidationPipe());
await app.listen(3000);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
# src/posts/posts.dto.ts
+import { IsNotEmpty, IsString } from 'class-validator';
+
export class CreatePostDto {
+ @IsNotEmpty()
+ @IsString()
title: string;
+
+ @IsNotEmpty()
+ @IsString()
content: string;
}
これだけでJSONのエラーが返ってくるようになる。
Interceptorを使えば、HTMLにエラーを埋め込むのもできたけど、 「リダイレクトかレンダリングか」をやろうとしたら面倒だった。
まぁ全部をNestでやるんじゃなく、 クライアントはReact辺りでやってNestはAPIだけを担当するのがよいのであろうと思い、 あまり深入りしないことにした。