NESTJSのどんなメソッドででもすべての要求を捕える単純なAPI終点を作る方法?


Originally posted here!
単純なAPIエンドポイントを作るには、NESTJSのどんなメソッドでもすべてのリクエストをキャッチします.
  • リクエストメソッド定義を記述するための有効なTypeScriptクラスです.この場合、すべてのリクエストをキャッチする単一のエンドポイントのみを書き込みます.
  • エー@Controller() コントローラのクラスの前にDecorator関数を使用してルートのメタデータを定義します.
  • エー@All() Decorator関数は、メタデータを設定して、class は、特定のエンドポイントに来るすべてのリクエストをキャッチするために使用されます.
  • TLドクター


    import { Controller, All } from "@nestjs/common";
    
    // the @Controller() decorator function will instruct Nestjs
    // to add a route of `/greet`
    @Controller("greet")
    export class GreetController {
      // the @All() decorator function will instruct Nestjs
      // that this is the default method that should be
      // invoked always when the user requests to
      // `/greet` endpoint with any methods
      @All()
      sayHello() {
        return `Hello World`;
      }
    }
    
    注:メインの基本的なボイラープレートコードを生成するにはapp モジュールを参照してくださいHow to create a new project or an app in Nestjs? あなたがNESTJSプロジェクトをしなかったならば.
    例えば、単純なリクエストAPIエンドポイントを/greet そして、このエンドポイントへのリクエストに対してGET , POST , PUT , DELETE OR PATCH 単純な文字列レスポンスを返すHello World! .
    これを行うには、まずリクエストコードをすべてのリクエストをキャッチするファイルを作成しましょうgreet.controller.ts .
    端末でこのファイルを作るにはmkdir ディレクトリを作るコマンドgreet そして、touch コマンドをすばやくコントローラファイルを作成します.
    こうすることができます.
    mkdir greet && touch greet/greet.controller.ts
    
    上記のコマンドを実行した後、このように見える構造があります.
    - greet
     - greet.controller.ts
    
    現在、内部greet.controller.ts ファイルを作りましょうclass 呼ばれるGreetController そして、我々がメインでこのクラスを輸入する必要があるので、それを輸出してくださいapp モジュール.
    こうすることができます.
    export class GreetController {}
    
    コントローラクラスを定義し、エクスポートした後に@Controller() からのデコレータ機能@nestjs/common モジュール
    import { Controller } from "@nestjs/common";
    
    export class GreetController {}
    
    さあ、使いましょう@Controller() 前にデコレータ機能GreetController クラスとgreet それに.これは@Controller() Decorator関数は、使用するルートメタデータを定義するパラメーターを受け取ります.私たちにはルートが必要だから/greet , 我々は、ちょうどgreet それに文字列を渡し、nestjsはルーティング機構を処理します.
    こうすることができます.
    import { Controller } from "@nestjs/common";
    
    // makes the /greet route
    @Controller("greet")
    export class GreetController {}
    
    使用後@Controller() Decorator関数は、ルートを定義するために、現在、クラスでメソッドを作りましょうsayHello . このメソッドを使用して応答を返します.
    こうすることができます.
    import { Controller } from "@nestjs/common";
    
    // makes the /greet route
    @Controller("greet")
    export class GreetController {
      // a simple method that returns a string
      sayHello() {
        return `Hello World`;
      }
    }
    
    今、我々はNESTJSにどんな方法とルートのどんな要請でもそうすることを指示する必要があります/greet 我々は、実行する必要がありますsayHello これを行うには、@All() からのデコレータ機能@nestjs/common モジュールで、sayHello このような引数がないメソッド
    import { Controller, All } from "@nestjs/common";
    
    // the @Controller() decorator function will instruct Nestjs
    // to add a route of `/greet`
    @Controller("greet")
    export class GreetController {
      // the @All() decorator function will instruct Nestjs
      // that this is the default method that should be
      // invoked always when the user requests to
      // `/greet` endpoint with any methods
      @All()
      sayHello() {
        return `Hello World`;
      }
    }
    
    注:あなたが見て@All() Decorator関数は、関数に引数を渡していないことを確認できます/greet エンドポイント.たとえば、このメソッドを呼び出す必要がある場合は/greet/hai エンドポイントは、hai@Delete() デコレータ機能.
    のコード/greet コントローラを行います.残っている唯一のことはGreetController コントローラクラスとそれをメインコントローラのコントローラとして初期化しますapp モジュールです.
    あなたがapp.module.ts (これはNestjs CLI ), そこにインポートする必要がありますGreetController クラスをコントローラに追加しますcontrollers 配列@Module() デコレータ機能.
    こうすることができます.
    /* app.module.ts file */
    import { Module } from "@nestjs/common";
    
    // Greet controller
    import { GreetController } from "./greet/greet.controller";
    
    @Module({
      imports: [],
      controllers: [GreetController], // <- add controller here
      providers: [],
    })
    export class AppModule {}
    
    今、私たちはシンプルなAPIエンドポイントを作りました/greet これはNESTJSプロジェクトでどんなメソッドの成功も要求します.矢🥳!
    あなたが要請するならばhttps://localhost:3000/greet 任意のメソッドを使用すると、Hello World サーバから.
    上のコードはcodesandbox .
    移動するHoppscotch API tester 🚀 リクエストなどのメソッドを送信するにはGET , POST , PUT , DELETE , PATCH , 上記のCodeDandboxコンテナ内のURLにETCなど.
    注意:上記のホプスコッチURLを使用してリクエストを送信できなかった場合はproxy アプリで.
    それで😃!

    お気軽に共有する場合は、この便利な発見😃.