Modular API Client

Post on 16-Mar-2018

53 views 3 download

Transcript of Modular API Client

Naoto Kaneko

Modular API Client

2016/08/17 Kyobashi.swift #2

通信まわりは煩雑•リクエストの送受信、およびエラーハンドリング

• リクエストのシリアライズ、レスポンスのデシリアライズ

• アクセストークンをヘッダーに付与、期限切れの場合はリフレッシュトークンで再発行

• ネットワークインジケータのオン/オフ

• 二重送信の防止

• ロギング

• パフォーマンス計測

• etc…

どこに実装するか• APIClient.swift

• .+ViewController.swift

どこに実装するか• APIClient.swift→責任過多

• .+ViewController.swift→コードの重複、肥大化

Modular API Client• 複数の「一つのことをうまくやる」オブジェクトから構成されるAPIクライアント

• 機能を追加しやすい

• テストしやすい

Modular API ClientRequest Response

API ClientRequest Response

API Client

Middleware 3

Middleware 2

Middleware 1

Request Response

API Client

Middleware 3

Middleware 2

Middleware 1

Request Response

API Client

Middleware 3

Middleware 2

Middleware 1

Request Response

Middleware 1 → 2 → 3 → API Client → 3 → 2 → 1

• 初期化がやや冗長な書き方になってしまう

• 必要なミドルウェアのセットはだいたい同じ

• ミドルウェアのセットにアクセスできない

• ミドルウェアのセットをスタックとして扱う

• デフォルトで必要なスタックを初期化できるようにして簡潔化

まとめ•通信まわりの処理は煩雑→各処理をミドルウェアとして実装することでAPIクライアントを小さく保つ

• 小さいミドルウェア群からAPIクライアントを構築するのが面倒→スタックに束ねることで簡単かつ柔軟に初期化できるようにする

詳細はこちらhttp://naoty.hatenablog.com/entry/

2016/07/14/110000