簡単なREST APIを開発する方法
本記事では、NestJSで簡単なREST APIを開発する方法を詳細に解説します。(CRUDモデルを中心に解説)
CRUDとは、永続的なデータを取り扱うソフトウェアに要求される4つの基本機能であるデータの作成(
Create
)、読み出し(Read
)、更新(Update
)、削除(Delete
)の頭文字をつなげた言葉です。主にデータベースを応用したシステムやデータベース管理システムについて用いられる言葉で、この4つに対応する機能や操作手段を実装することで、システム上に自在にデータの操作や管理を行うことができます。
本ページではCRUDモデルに従ってNestJS製のREST APIを実装する手順を詳細に解説します。
TypeORMとは、TypeScriptとJavaScriptで使えるORM(Object Relational Mapping)です。ORMとは、データベースとオブジェクト指向プログラミング言語の間の非互換的なデータを変換できるプログラミング手法です。
言い換えれば、オブジェクト指向とリレーショナルデータベース(RDB)の考え方を上手に変換して繋いでくれるものを意味します。
多くのプログラミング言語はオブジェクトを扱うので、そのオブジェクトをRDBに保存できるように、対応付を簡単にするためORMを活用します。より簡単に言えば、SQLを直接書くことなく、オブジェクトの操作でDBを操作できるということになります。
実際のプロダクトやWebアプリケーションを想像してください。2つのエンティティ、例えばUserとProductのエンティティに対してCRUDエンドポイントを公開する必要があるとします。ベストプラクティスに従って、それぞれのエンティティに対して以下のようないくつかの操作を実装する必要があります。
- モジュール(
nest g mo
)を生成して、コードを整理し、関連するコンポーネントをグループ化します。 - CRUDルート(またはGraphQLアプリのクエリやミューテーション)を定義するためのコントローラー(
nest g co
)を作成します。 - ビジネスロジックを実装し、分離するためのサービス(
nest g s
)を生成します。 - リソースのデータを表現するためのエンティティクラスやインターフェイスを生成します。
- データの転送オブジェクト(あるいはGraphQLアプリケーションの入力)を生成し、データがネットワーク上でどのように送信されるのかを定義します。
これらの繰り返し行われるプロセスをスピードアップするために、Nest CLIでは全ての定型的なコードを自動的に生成するジェネレータを提供し、この全てを行うことを避けて少ないコード量で開発を円滑に進められるようにします。
- TypeScript
- NestJS
- Visual Studio Code
- TypeORM
- 1.ファイルやディレクトリを用意する
- 2.TypeORMを使って
Post
テーブルを作成する - 3.