<サーバーサイドの流れ>
- main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { ValidationPipe } from '@nestjs/common';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useGlobalPipes(new ValidationPipe());
app.enableCors({
origin: 'http://localhost:3000', // Next.js のフロントエンドのURL
credentials: true, // Cookieの送受信を許可
methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'], // 許可するHTTPメソッド
allowedHeaders: ['Content-Type', 'Authorization'], // 許可するヘッダー
});
await app.listen(process.env.PORT ?? 8000);
}
bootstrap();
Nest.jsの開始
このコードがAppの始まり。これがないと始まりません。
const app = await NestFactory.create(AppModule);
AppModuleの中身
AppModuleが大枠。その中にUserModuleなど必要なものをインポートしていく。
imports: [
UserModule,
TodoModule,
NewsModule,
TypeOrmModule.forRoot(AppDataSource.options),
],
リクエスト(フロントエンドからバックエンドに情報を渡す時)のバリデーション(入力チェック)をアプリ全体で有効にする設定
間違えていたら自動でエラーを返してくれる。
app.useGlobalPipes(new ValidationPipe());
他のドメイン(例:Next.js)から NestJS API に通信を許可するため。
CORSとは
異なるドメイン間での通信を解除するために必要
app.enableCors({
origin: 'http://localhost:3000', // Next.js のフロントエンドのURL
credentials: true, // Cookieの送受信を許可
methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'], // 許可するHTTPメソッド
allowedHeaders: ['Content-Type', 'Authorization'], // 許可するヘッダー
});
NestJS アプリケーションで サーバーを起動してポートを指定して待ち受けるために必要なコード
await app listen(...)
NestJS のサーバーを起動して、HTTPリクエストの待ち受けを開始する処理。
await を付けることで、アプリが完全に起動するまで次の処理に進まないようにしてる。
process.env.PORT
ファイルや環境変数に設定された PORT の値を読み取る。
await app.listen(process.env.PORT ?? 8000);
定義した bootstrap 関数を実行するために書く。
通常 main.ts ファイルに書かれている。
bootstrap();