未経験からのNestJS入門|サービス
サービスとは
コントローラーはルーティングを制御しますが、サービスはルーティングされたリクエストの処理を行います。
作成したサービスは、app.module.ts ファイルのプロバイダーに登録することで、コントローラーでサービスの定義を行えます。
また、サービスの動作確認を行うにはコントローラーの作成が必須です。コントローラーの作成方法がわからない場合は、『未経験からの NestJS 入門|コントローラー』を確認してください。
サービスの作成
Nest.js には、Nest CLI という非常に便利なコマンドラインツールがあります。これを使用することで、サービスファイル・サービステストファイル・プロバイダーの登録を全て自動的に行うことができます。
以下のコマンドを実行すると、user ディレクトリにサービスファイルとサービステストファイルが追加されます。
nest g s users
実行すると user ディレクトリにサービスファイルとサービステストファイルが追加されます。
src/
└── users/
├── users.service.spec.ts
└── users.service.ts
app.module.ts を確認してください。プロバイダーの登録も自動的に行われているかと思います。
// /src/app.module.ts
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { UsersController } from './users/users.controller';
import { UsersService } from './users/users.service'; ← CLI 実行時に自動登録
@Module({
imports: [],
controllers: [AppController, UsersController],
providers: [AppService, UsersService],← CLI 実行時に自動登録
})
export class AppModule {}
サービスファイルを編集して、ルーティング後の処理を追記していきます。以下は、単純に “users” の文字列を返すサービスの例です。
// /src/users/users.service.ts
import { Injectable } from '@nestjs/common';
@Injectable()
export class UsersService {
getUser(): string {
return 'users';
}
}
呼び出し元のコントローラーも修正します。UserController にサービスの依存性注入を行い、ルーティング時にサービスを読み込むようにしています。
// /src/users/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()
getUser(): string {
return this.usersService.getUser();
}
}
これでサービス作成は完了しました。
試しにhttp://localhost:3000/usersアクセスしてください。サービスが実行され、user 文字列が出力されるはずです。
最後に
簡単なサービスを作成し、コントローラーに依存性注入して動作確認まで行いました。 今回作成したコードは、GitHub リポジトリできるので、興味があれば実行して試してみてください。
次に『未経験からの NestJS 入門|モジュール』からモジュールの作成方法について勉強します。