Nest.jsとは
Nest.jsとは、Node.js上で動作するMVCフレームワーク
Express.jsとAngularの機能を組み合わせており、Webアプリケーション、モバイルアプリケーション、サーバーアプリケーションなど、さまざまな種類のアプリケーションを開発することができる
Nest.jsは、TypeScriptで書かれているかつ、モダンな開発手法と多くの機能をサポートしているため、
多くの開発者から支持されており、最近人気は高まっている。
特徴としては、
- アプリケーションの構造をモジュールベースで構成することができるため、コードの再利用性が高い
- TypeScriptをサポートしているため、型安全なコードを開発することができる
- テストフレームワークを統合しているため、テスト駆動開発(TDD)を簡単に行うことができるんだって!
- 多くのライブラリと統合されているため、開発を効率化することができる
Nest CLIのインストールと起動
Node.jsがインストールされている前提
Nest CLIのインストール
npm install -g @nestjs/cli
新しいプロジェクトの作成
Nest CLIを使って新しいプロジェクトを作成します。
このコマンドを実行すると、いくつかの質問が表示されます。デフォルトの設定で進むにはEnterキーを押します。
nest new project-name
アプリケーションの起動
ブラウザで http://localhost:3000
にアクセスして返されたらOK
npm run start
モジュール、コントローラー、サービスの作成
モジュールの生成:
nest generate module users
コントローラーの生成:
nest generate controller users
サービスの生成:
nest generate service users
モジュールの設定
生成されたファイルは src/users
ディレクトリに作成されます。users.module.ts
ファイルには、新しく作成されたコントローラーとサービスがインポートされています。
import { Module } from '@nestjs/common';
import { UsersController } from './users.controller';
import { UsersService } from './users.service';
@Module({
controllers: [UsersController],
providers: [UsersService],
})
export class UsersModule {}
コントローラーの設定
users.controller.ts
ファイルにルートとハンドラを追加します。
import { Controller, Get } from '@nestjs/common';
import { UsersService } from './users.service';
@Controller('users')
export class UsersController {
constructor(private readonly usersService: UsersService) {}
@Get()
findAll(): string {
return this.usersService.findAll();
}
}
サービスの設定
users.service.ts
ファイルにロジックを追加します。
import { Injectable } from '@nestjs/common';
@Injectable()
export class UsersService {
findAll(): string {
return 'This action returns all users';
}
}
全体の構成
app.module.ts
ファイルに UsersModule
をインポートします。
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { UsersModule } from './users/users.module';
@Module({
imports: [UsersModule],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
これで、http://localhost:3000/users
にアクセスすると、UsersService
が返すメッセージ(”This action returns all users”)が表示されます。
Nest.jsでのGETパラメータ取得
GETパラメータを取得するには、@Queryデコレータを使用する
コード例)
@Get("/")
async getHello(@Query('name') name: string) {
return `Hello, ${name}!`;
}
@Get("/:paramname/XXX")
async getHello(@Query('paramname') paramnameA: string) {
return `Hello, ${name}!`;
}
@Query(‘パラメータ名’)
- パラメータ名を指定することで値を取得できる
/?パラメータ名=値
や /:paramname/XXX など
Nest.jsでのリクエストBody取得
リクエストBodyを取得するには、@Bodyデコレータを使用する
Bodyにnameがある場合のコード例)
@Post()
async postHello(@Body() body: { name: string }) {
console.log(body.name);
}
ClassやTypeも使えるので実際はこちらの方が使うと思います。
class-validatorをimportして使うとバリデーションを掛けることもできる
// @IsString や @IsNotEmptyでバリデーションを掛ける
class RequestDto {
@IsString
@IsNotEmpty
nama:strring
}
@Post()
async postHello(@Body() body: RequestDto) {
console.log(body.name);
}
さいごに
TypeScriptが使えて、コントローラーでのRequest受け取りも簡単でわかりやすいため
私は、Nest.jsは確実に伸びると踏んでいます!
今回は頭出し程度ですが、ぜひ、取り入れのご検討を!!
コメント