前回
コントローラのリダイレクト
コントローラでリダイレクトさせるには、@Redirect()デコレータを使用します。
@Redirect()デコレータは、urlとstatusCodeを引数に取りますが、どちらも必須ではありません。
statusCodeを省略した場合は、302が返却されます。
src/cats/cats.controller.ts
import { Controller, Get, Post, Redirect } from '@nestjs/common'; @Controller('cats') export class CatsController { @Get('abc*') @Redirect('https://nestjs.com', 301) hello(): string { return 'hello!'; } @Post() create(): string { return 'this is create method!'; } }
helloメソッドに、@Redirect('https://nestjs.com', 301)デコレータを追加しました。
この状態で、postmanでGET localhost:3000/cats/abcにリクエストを送ると、https://nestjs.com にリダイレクトされます。
ルーティングパラメータ
GET /cats/1のように、ルーティングの中で動的にパラメータを取得したい場合は、ルーティングデコレータの引数に、パラメータトークンを使用します。
パラメータトークンで取得した値には、@param()デコレータでアクセスすることができます。
src/cats/cats.controller.ts
import { Controller, Get, Param } from '@nestjs/common'; @Controller('cats') export class CatsController { @Get(':id') hello(@Param() params): string { return `ID is ${params.id}`; } }
helloメソッドのルーティングデコレータの引数にパラメータトークンを、helloメソッド自体の引数に@Param()デコレータを追加しました。
この状態で、postmanでGET localhost:3000/cats/1にリクエストを送ると、以下の通り返却されます。
ID is 1
@Param()デコレータの引数にパラメータトークン名を渡すことで、そのまま引数としてパラメータトークンを受け取ることもできます。
src/cats/cats.controller.ts
import { Controller, Get, Param } from '@nestjs/common'; @Controller('cats') export class CatsController { @Get(':id') hello(@Param('id') id: string): string { return `ID is ${id}`; } }
@Param()デコレータの引数に、idというパラメータトークン名を渡しました。
この状態で、postmanでGET localhost:3000/cats/1にリクエストを送ると、以下の通り返却されます。
ID is 1
まとめ
ここまでで、
- コントローラのルーティングにおけるリダイレクト
- コントローラの動的なパラメータの取得
について学びました。
次回は、プロバイダについて掘り下げていこうと思います。
コード
今回のコードは、以下に格納しました。