注:この記事は、nestjsを初めて学習した後のブロガーの知識と理解のみを記録しています。経験はまだ浅く、記事の内容は参照用です。エラーがあれば訂正してください。
制御層(コントローラー)
この層の責任:要求処理、ビジネス呼び出し、応答構造
。HTTP要求および応答メッセージ構造に精通していない人は、最初にブログを読むことができます:https://blog.csdn.net/jw2268136570/article/details/103216174
- 構成:ルートモジュール(app.module.ts)でコントローラーコントローラーを構成します:[AppController]、
0.シングルスレッド処理
Node.js
要求/応答マルチスレッドステートレスモデルに従わず、各要求はメインスレッドによって処理されます。- 非同期操作が含まれている場合、または要求の完全なサイクルに含まれている可能性がある場合は、非同期/待機を非同期処理に使用できます
1.リクエスト処理
マッチリクエスト
- マッチング処理:デコレータは、リクエストとコントローラ間のマッピングを確立します。
- マッチングルール:リクエストプレフィックスプレフィックス(クラスプレフィックス、メソッドプレフィックス、ワイルドカードサポート*)、リクエストメソッドGET / POST / .. ..
- 動的URLマッチング
- サブドメインルーティング:要求されたホストに応じて、インターフェイスの呼び出し権限を決定します
アクセスリクエスト
要請情報 | デコレータへのアクセス | 通常のオブジェクトアクセス |
---|---|---|
リクエスト | @リクエスト() | 必須 |
セッションのリクエスト | @セッション() | req.session |
リクエストパラメータ | @Param(key?:string) | req.params / req.params [key] |
リクエストパラメータ | @Body(key?:string) | req.body / req.body [key] |
リクエストパラメータ | @Query(key?:string) | req.query / req.query [key] |
リクエストヘッダー | @Headers(name?:string) | req.headers / req.headers [名前] |
IPをリクエストする | @Ip() | req.ip |
- 場合
import {
Controller, Get ,Req, Ip, Post,Query,Param,Body} from '@nestjs/common';
import {
AppService } from './app.service';
import {
Request, query } from 'express';
// import {CreateCatDto} from './DTO/catDto'
class CreateCatDto {
readonly name: string;
readonly age: number;
readonly breed: string;
}
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {
}
@Get('test')
getHello(@Req() request: Request, @Query('name') name:String,@Ip() ip:String): string {
console.log(`请求参数name为(普通对象): ${
request.query['name']}`)
console.log(`请求参数name为(装饰器): ${
name}`)
console.log(`ip地址为(普通对象): ${
request.ip}`)
console.log(`ip地址为(装饰器): ${
ip}`)
return this.appService.getHello();
}
@Get(':id')
findOne(@Param('id') id: string) {
return `This action returns a #${
id} cat`;
}
@Post()
async create(@Body() createCatDto: CreateCatDto) {
// POST请求参数获取,@Body()配合DTO类
return 'This action adds a new cat';
}
}
2.ビジネスコール
- インポート: './ app.service'から{AppService}をインポートします。
- 呼び出し:this.appService.getHello();を返します。
3.応答構造
アクセス応答
応答メッセージ | デコレータへのアクセス | 通常のオブジェクトアクセス |
---|---|---|
応答 | @Response()@ Res()* | res |
ステータスラインを作成する
- ステータスコード:@HttpCode(204)
応答ヘッダーを作成する
- 応答ヘッダー:@Header( 'Cache-Control'、 'none')
応答本体を作成する
- ページに戻る/基本タイプ
- オブジェクト/配列を返す:JSONに自動的にシリアル化する
リダイレクト
- 基本構文:@Redirect( 'https://nestjs.com')
- 動的url:コントローラーメソッドreturn {url: 'https://docs.nestjs.com/v5/'};