1
0

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についての備忘録です。
参考程度にお願いいたします。
これからも追記していく予定です。

NestJSとは

  • Node.js上で動作するオープンソースのバックエンド開発フレームワーク
  • TypeScriptで作られている
  • Expressをコアにして作られている
  • Angularにインスパイアされている

NestJSを使うメリット

  • 型の恩恵を得ることができる
  • Expressの機能やライブラリを使うことができる
  • Nest CLIを使ってプロジェクトやファイルのテンプレートを生成できる
  • テストフレームワークが標準で用意されている
  • 拡張性が高い

NestJSを使うデメリット

  • Rails、Laravel、Djangoなどと比較すると利用ユーザーが少なく、情報が少ない
  • 公式ドキュメントが日本語に非対応

Nest CLI

  • Nestコマンドラインインターフェース
  • プロジェクトの雛形を用意することができる

新規プロジェクト作成のコマンド

nest new プロジェクト名

新規コントローラの作成

nest g controller コントローラ名

NestJSのアーキテクチャ

NestJSにおける最もコアとなる要素

  • Controller
  • Service
  • Module

Moduleとは

  • 関連するControllerやServiceなどをまとめ、アプリケーションとして利用できるようにNestJSに登録する役割
  • NestJSアプリケーションには必ず1つ以上のルートモジュールと、0個以上のFeatureモジュールが必要となる

Moduleの定義

1.classに@Module()デコレーターをつける
2.@Module()デコレーターのプロパティを記述する

Controllerとは

  • クライアントからのリクエストを受け付け、クライアントにレスポンスを返す
  • Controllerがルーティングの機能を担う
  • 特定のパスとControllerが紐付けられる(例:/usersとUsersController)
  • HTPPメソッドとパスを指定したメソッド(ハンドラー)を定義する

Serviceとは

  • ビジネスロジックを定義する
  • Controllerから呼び出すことで、ユースケースを実現する

Dependency Injection(DI)

  • 日本語にすると「依存性の注入」
  • 依存関係のあるオブジェクトを外部から渡す

JWTとは

  • JSON Web Tokenの略称で、JSONの形をした認証情報
  • 電子署名により、改ざんの検知が可能
  • 認証用のトークンとして使用される

JWTの構成

  • 3つの要素から構成される
  • ヘッダ:ハッシュアルゴリズムの情報などのメタデータ
  • ペイロード:認証対象の情報で、ユーザー名やIDなど任意の情報
  • 署名:ヘッダとペイロードのエンコードしたものに秘密鍵を加えてハッシュ化したもの
  • 要素ごとにBase64エンコードされている
  • 3つの要素が.(ドット)で結合されている

JWTのメリット

  • 署名が含まれているため、改ざんチェックできる
  • 有効期限をつけるなど、セキュアなToken発行を行える
  • セッションと異なり、状態をサーバーで管理する必要がない
  • 任意のデータをTokenに含めることができる
1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?