NESTJSとNRWL NXによるAPI API構築入門


導入


このチュートリアルでは、NestJSとNXワークスペースでAPIのビルド方法を学びます.目標はあなたに拡張するのは簡単です良い出発点を与えることです.さらに、それは私が書くつもりである後のポストとシリーズのためのリファレンスとして機能します.
このポストは、技術のスタックへの導入として機能し、シリーズのチュートリアルを越える.

防災研



NestJSはAPIを使用してノードを構築するためのフレームワークです.JSとタイプスクリプト.NESTJSは、明示的に(または任意にfastify)の上に独創的なAPIを提供し、コードの多くを書くことなく、新しい機能を迅速に追加する宣言的な方法を有効にする、クラススクリプトのクラスやデコレーターの大量使用を行います.
NESTJSは偉大なdocumentationを持ち、積極的に維持されます.プロジェクト自体によって提供される有用なライブラリがたくさんあり、さらに多くの機能を提供する成長コミュニティがあります.それに加えて、必要な機能が存在しない場合NESTJS拡張するのは簡単です.

NESTJS概念


ここではいくつかのNESTJSの概念は、このシリーズを通過するときに知っておくべきことです.

モジュール


NESTJSからのアーキテクチャは角度によって影響を受けます.これは、スタンドアロン、他のモジュールによってインポートすることができます再利用可能なブロックの機能をカプセル化するモジュールを使用します.モジュールは他のコンポーネントを一緒に結び、依存性注入が確実に機能するようにします.

コントローラ


コントローラはRESTful APIを構築するために使用されます.彼らはあなたが夢見ることができるどんなHTTP APIも構築するのを許します、そして、タイプスクリプトクラスにメソッドを加えて、それらを飾ることによって、きれいで宣言的な問題でそうします.これらのコントローラは、外部のREST APIを定義します.

プロバイダ


プロバイダは、コントローラ、リゾルバまたは他のプロバイダに注入され、それらの要求を処理します.データベースにアクセスしたり、サードパーティのAPIやライブラリに呼び出すようなものはすべてプロバイダで行われます.これは、コントローラをきれいに保ち、集中し、アプリケーションの他の部分と機能を共有することが容易になります.

レゾルバ


リゾルバは、GraphSQL APIを構築するために使用されます.コードの最初のアプローチを使用して、GraphSQL APIを構築することができます.つまり、GraphSQLのスキーマ定義言語(SDL)を使用してAPIを定義する必要はありません.コントローラのように、リゾルバは外部APIを定義し、重いリフティングを行うためにプロバイダーを使用します.

NX



Nxは、同じリポジトリ内のすべての1つまたは複数のアプリケーションとライブラリを開発し、管理するために、CLIツールとモノリポジトリ構造を組み合わせたものです.NXはコードコラボレーション、統一テストを奨励し、ビルドとテストパフォーマンスを最適化します.
NXは、媒体や大規模なアプリケーションを構築するための素晴らしいツールです.モノRepoを使用すると、プロジェクトのさまざまな部分の間で簡単にコードを共有することができます.NXは、それがアプリケーションのどの部分を知っているという意味でスマートです.以下の依存グラフについてもっと読みなさい.

NXコンセプト


ここでいくつかのNXの概念は、このシリーズを通過するときに知っておくべきことです.

ワークスペース


ワークスペースは、リポジトリのルート上で定義され、1つ以上のプロジェクトから構成されます.ワークスペースはNX CLIか角度CLIのどちらかを使用して、プロジェクトを提供、テスト、ビルド、リントします.ワークスペースは、ファイルnx.jsonおよびworkspace.json(または角度CLIを使用する場合はangular.json)で定義されます.

アプリケーション


NXでは、アプリケーション(またはApps)は、実行可能なアプリケーションを含むプロジェクトです.アプリケーションは軽量でなければならず、ライブラリ内で定義された機能を公開する必要があります.

ライブラリ


ライブラリ(またはLIBS)は、アプリケーションの機能を実装するプロジェクトです.ライブラリは、アプリケーションと他のLIBSによって消費できる外部APIを定義します.

プラグイン


NXワークスペースの実際の機能は、インストールされているプラグインによって定義されます.NXは、例えば角度、ノード、次、反応、およびWebコンポーネントのサポートを追加するいくつかの公式プラグインが付属しています.また、コミュニティのプラグインの成長リストがあります.

依存グラフ


依存グラフ、またはDEPグラフは、monorepoの異なる部分が互いに依存する方法を示す自動的に生成されたスキーマです.NXは、この情報を使用して、ワークスペースの一部でコマンドをインテリジェントに実行します.たとえば、実際に変更されたプロジェクト、または依存関係のいずれかが変更された場合のみ再構築されます.

プロジェクト構造


このシリーズでは、シンプルな構造を使用します.このように、ライブラリapicoreを消費するcourseというアプリを作ります.
apps/api
libs/core
libs/course
libs/<library> (any other functionality goes here).

チュートリアルシリーズ


このシリーズは4つのチュートリアルで構成されています.


プロジェクトを起動するには、空のNXワークスペースを作成し、それが何を構成するかを確認するために見回す.各コミットのコードを自動的にフォーマットするためのツールをインストールして設定します.これを行うと、将来のすべてのコードに似たようなスタイルが確認されます.


プロジェクトを作成した後、我々は、コアと呼ばれるライブラリを使用してAPIと呼ばれるアプリケーションを作成するNXの公式NESTJSプラグインを使用します.コアライブラリは、ランタイム設定のエクスポートに責任があり、APIによって消費されます.


これらの部品が適切であるとき、APIに実際の機能性を加えることに動きます.必要な依存関係をインストールし、NESTJS用のGraphSQLモジュールを設定した後、GraphSQLリゾルバを実装し、サーバーのuptimeを返す単純なクエリを追加します.


一旦これが完了したら、APIは出荷する準備ができています!ローカルにプロジェクトを構築し、すべてが期待通りに動作していることを確認した後、Herokuに配備する設定を追加します.

ありがとう


まず第一に、このシリーズのレビューのおかげで🙏:




  • このシリーズのカバー写真は、Unsplashの上でthis photoによってTodd Kentの編集されたバージョンです.
    私の記事を読んでいただき、ありがとうございました.お気軽に手を差し伸べるし、私に従ってくださいまたはdevにコメントを残す!🐝