Modular API Client

19
Naoto Kaneko Modular API Client 2016/08/17 Kyobashi.swift #2

Transcript of Modular API Client

Page 1: Modular API Client

Naoto Kaneko

Modular API Client

2016/08/17 Kyobashi.swift #2

Page 2: Modular API Client
Page 3: Modular API Client

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

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

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

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

• 二重送信の防止

• ロギング

• パフォーマンス計測

• etc…

Page 4: Modular API Client

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

• .+ViewController.swift

Page 5: Modular API Client

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

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

Page 6: Modular API Client

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

• 機能を追加しやすい

• テストしやすい

Page 7: Modular API Client

Modular API ClientRequest Response

Page 8: Modular API Client

API ClientRequest Response

Page 9: Modular API Client

API Client

Middleware 3

Middleware 2

Middleware 1

Request Response

Page 10: Modular API Client

API Client

Middleware 3

Middleware 2

Middleware 1

Request Response

Page 11: Modular API Client

API Client

Middleware 3

Middleware 2

Middleware 1

Request Response

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

Page 12: Modular API Client
Page 13: Modular API Client
Page 14: Modular API Client
Page 15: Modular API Client

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

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

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

Page 16: Modular API Client
Page 17: Modular API Client

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

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

Page 18: Modular API Client

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

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

Page 19: Modular API Client

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

2016/07/14/110000