前回
コントローラ
POSTを受け取るメソッドも定義してみましょう。
src/cats/cats.controller.ts
import { Controller, Get, Post } from '@nestjs/common'; @Controller('cats') export class CatsController { @Get() hello(): string { return 'hello!'; } @Post() create(): string { return 'this is create method!'; } }
postman
で、POST localhost:3000/cats
を呼ぶと、以下のように返却されます。
this is create method!
以下の通り、HTTPメソッドデコレータが提供されています。
- @Get()
- @Post()
- @Put()
- @Delete()
- @Patch
- @Options()
- @Head()
- @All()
ルーティングにおけるワイルドカードの使用
ルーティングパスはワイルドカードもサポートしています。
src/cats/cats.controller.ts
import { Controller, Get, Post } from '@nestjs/common'; @Controller('cats') export class CatsController { @Get('abc*') hello(): string { return 'hello!'; } @Post() create(): string { return 'this is create method!'; } }
hello
メソッドのGetデコレータを、@Get('abc*')
に変更しました。
これは、以下のいずれも実行することができます。
- GET localhost:3000/cats/abc
- GET localhost:3000/cats/abcd
- GET localhost:3000/cats/abcde
カスタムステータスコード
レスポンスステータスコードはデフォルトで200、POSTリクエストは201ですが、この動作を変更することができます。
src/cats/cats.controller.ts
import { Controller, Get, HttpCode, Post } from '@nestjs/common'; @Controller('cats') export class CatsController { @Get('abc*') @HttpCode(418) hello(): string { return 'hello!'; } @Post() create(): string { return 'this is create method!'; } }
hello
メソッドに、@HttpCode(418)
デコレータを追加しています。
この状態で、GET localhost:3000/cats/abc
を呼ぶと、以下のレスポンスが、HTTPレスポンスコード 418で返却されます。
hello!
カスタムレスポンスヘッダ
カスタムレスポンスヘッダを付与することができます。
src/cats/cats.controller.ts
import { Controller, Get, Header, HttpCode, Post } from '@nestjs/common'; @Controller('cats') export class CatsController { @Get('abc*') @HttpCode(418) @Header('Cache-Control', 'none') hello(): string { return 'hello!'; } @Post() create(): string { return 'this is create method!'; } }
hello
メソッドに、@Header('Cache-Control', 'none')
デコレータを追加しています。
この状態で、GET localhost:3000/cats/abc
を呼ぶと、key: Cache-Control
、value: none
のレスポンスヘッダが乗った状態の以下のレスポンスが、HTTPレスポンスコード 418で返却されます。
hello!
まとめ
ここまでで、
- POSTや他のメソッドを受け付けるコントローラの書き方
- ルーティングにワイルドカードを使用したコントローラの書き方
- カスタムステータスコードを返却するコントローラの書き方
- カスタムレスポンスヘッダを乗せるコントローラの書き方
を学びました。
次も、もう少しだけコントローラを掘り下げようと思います。
コード
コードは以下に格納しました。