APIと画面を疎結合にする

業務で携わっているWEBアプリは内部APIを採用している。

しかし、APIが画面と密結合していて問題になっているので、その問題点と解決策をまとめる。

WEBアプリの構成

WEBサーバ:APIサーバにアクセスし、画面に必要な情報を取得して画面を表示する

APIサーバ:DBや外部システムにアクセスし、画面が要求する情報をWEBサーバに返す

※画面ごとにWEB/APIの機能(エンドポイント)がある感じ

APIと画面が密結合になる

APIが画面を意識し過ぎている

APIが画面を意識し過ぎて、 画面の構成に合わせたAPIレスポンスになっている。

そのため、以下の問題がある。

  • 画面の変更にAPIが影響を受けやすい
  • WEB側でやるべき処理をAPI側でやってしまう
  • APIレスポンスが扱いづらい

APIレスポンスをビューにアサインしている

APIレスポンスをそのままビューにアサインしている。

そのため、以下の問題がある。

  • 画面の表示ロジックがビューに散らばる
  • APIレスポンス以外でビューに必要な値は別々でビューにアサインしなければならない

APIと画面を疎結合にする

APIレスポンスは画面を意識しすぎない

画面の構成に合わせたAPIレスポンスにしない。

ドメインを意識してAPIレスポンスを構成する。

画面用のモデルに変換する

画面の構成に合わせたモデルを用意し、APIレスポンスを変換する。

表示ロジックをビューから排除でき、APIレスポンス以外の情報も一つのモデルに統合できる。

参考文献

qiita.com

kazuk-i.hatenadiary.org

atmarkit.itmedia.co.jp

qiita.com

masuda220.jugem.jp

minekoa.hatenadiary.org