構想 - APIクライアントライブラリ
概要
APIクライアントライブラリをこう作りたいっていう構想をまとめたい
APIクライアントで必要な要素として以下のようなコンポーネントが想定される
まずはリクエスト
- http method
- parameter
- request header
- encoder(encoding)
- json
- url
- response parser
- request client
その結果レスポンスを受け取る
- status code
- payload
- response header
これ以外にもstreamだったりkeep-aliveだったり様々な機能が想定される
HTTP Method
Request Parameter
様々なAPIクライアントライブラリ
構想するにあたって一般化をしたいため他言語含めたAPIクライアントから学びを得たい
Swift
APIKit
Alamofire
Rust
reqwest
Python
requests
Pythonだとよく使われるのはrequestsなイメージがある
動的型付け言語であるのでSwiftだと表現できないような場合もありそうだけど見ていく
リポジトリより機能の一覧を見ると
- International Domains and URLs
- Keep-Alive & Connection Pooling
- Sessions with Cookie Persistence
- Browser-style SSL Verification
- Basic/Digest Authentication
- Elegant Key/Value Cookies
- Automatic Decompression
- Automatic Content Decoding
- Unicode Response Bodies
- Multipart File Uploads
- HTTP(S) Proxy Support
- Connection Timeouts
- Streaming Downloads
- .netrc Support
- Chunked Requests
上記のようにまとめられている
Ruby
上記より参考にすると機能的に網羅されてメジャーなライブラリは
- HTTPClient
- Faraday
の2つが良さそう