前回
コントローラのリダイレクト
コントローラでリダイレクトさせるには、@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
まとめ
ここまでで、
- コントローラのルーティングにおけるリダイレクト
- コントローラの動的なパラメータの取得
について学びました。
次回は、プロバイダについて掘り下げていこうと思います。
コード
今回のコードは、以下に格納しました。