構想 - APIクライアントライブラリ

概要

APIクライアントライブラリをこう作りたいっていう構想をまとめたい

APIクライアントで必要な要素として以下のようなコンポーネントが想定される

まずはリクエス

  • http method
  • parameter
  • request header
  • encoder(encoding)
  • response parser
  • request client

その結果レスポンスを受け取る

  • status code
  • payload
  • response header

これ以外にもstreamだったりkeep-aliveだったり様々な機能が想定される

HTTP Method

github.com

Request Parameter

github.com

様々なAPIクライアントライブラリ

構想するにあたって一般化をしたいため他言語含めたAPIクライアントから学びを得たい

Swift

APIKit

github.com

Alamofire

github.com

Rust

reqwest

github.com

docs.rs

Python

requests

Pythonだとよく使われるのはrequestsなイメージがある

github.com

動的型付け言語であるので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

qiita.com

上記より参考にすると機能的に網羅されてメジャーなライブラリは

  • HTTPClient
  • Faraday

の2つが良さそう

HTTPClient

github.com

Faraday

github.com