2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

NestJS でクライアントリクエストを受け取る

Last updated at Posted at 2023-10-30

はじめに

この記事では、NestJS の Controller でクライアントリクエストを受け取る際の実装方法について記載します。

開発環境

開発環境は以下の通りです。

  • Windows11
  • VSCode
  • Node.js 20.5.0
  • NestJS 10.0.0
  • TypeScript 5.1.3

事前準備

以下の手順に沿って、NestJS をインストールします。

次に以下の記載内容に沿って、コントローラー用のクラスを作成します。

リクエストオブジェクトの受け取り

@Req() デコレーターをメソッドの引数に指定することで、リクエストオブジェクトを受け取ることができます。

app.controller.ts
import { Controller, Get, Req } from '@nestjs/common';
import { Request } from 'express';

@Controller('controllers')
export class AppController {
  @Get('request-object/:param')
  getRequestObject(@Req() request: Request): string {
    return `RequestObjectController returns path param:  ${JSON.stringify(
      request.params,
    )}, query param: ${JSON.stringify(request.query)}`;
  }
}

上記の例では、リクエストオブジェクトを受け取り、その中からパスパラメーターとクエリパラメーターを取り出しています。

image.png

リクエストオブジェクトから取り出すことのできるプロパティについては、こちらに記載があります。

https://expressjs.com/en/api.html#req

クエリパラメーターの受け取り

リクエストオブジェクトを受け取るのではなく、その中の特定のプロパティを受け取ることもできます。
@Query(key?: string) デコレーターをメソッドの引数に指定することで、クエリパラメーターを受け取ることができます。

app.controller.ts
import { Controller, Get, Query } from '@nestjs/common';

@Controller('controllers')
export class AppController {
  @Get('query-parameters')
  getQueryParameters(@Query() param: string): string {
    return `QueryParametersController returns param: ${JSON.stringify(param)}`;
  }
}

image.png

リクエストボディの受け取り

@Body(key?: string) デコレーターをメソッドの引数に指定することで、リクエストボディを受け取ることができます。

app.controller.ts
import { Body, Controller, Post } from '@nestjs/common';

@Controller('controllers')
export class AppController {
  @Post('request-body')
  postRequestBody(@Body() body: string): string {
    return `RequestBodyController returns body: ${JSON.stringify(body)}`;
  }
}

image.png

参考

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?