Skip to content

Latest commit

 

History

History
67 lines (37 loc) · 1.68 KB

クリーンアーキテクチャ.md

File metadata and controls

67 lines (37 loc) · 1.68 KB

クリーンアーキテクチャ

REST API で作成するプロセス

  • router
  • controller
  • usecase
  • repository

以下、リクエスト処理のフロー

router

クライアント側から送られてくる HTTP リクエストを受け取る middleware の中でcsrf tokenJWTのバリデーションを実行

バリデーションに問題がなければ、リクエストに対応する controller を呼び出す。

controller

HTTP リクエストの body に書いてあるデータを usecase で利用できる形に加工し、usecase を呼び出す。

usecase

usecase の中では、ビジネスロジックを呼び出す。

usecase の例えば。。。

ログイン

ログインリクエストがあった場合、usecase の中で JWT トークンを生成する

CRUD リクエスト

CRUD 操作の制御を行う

repository

DB への書き込み usecase から repository の機能を呼び出すことで DB に対する CRUD 操作ができるようになる

レスポンス

repository

DB に与えた結果を usecase に返す

usecase

repository から返ってきた内容を、response 用に加工

controller

usecase から受け取った値を json に変換して、クライアントに response として返却する

もしも。。。

postgresSQL から MYSQL への仕様変更があった

依存関係逆転の原則

usecase が repository に依存してる状況(クリーンアーキテクチャではアンチパターン?)

usecase は repository のインターフェースだけに依存させる usecase と repository を直接依存させない

validation を task usecase に追加する