HimotokiとAPIKitでAPIクライアント
APIKitとは
Himotokiとは
GitHub - ikesyo/Himotoki: A type-safe JSON decoding library purely written in Swift
単一のモデルをデコード
Requestプロトコル継承したGithubRequestを作成・Extension。
リクエストを生成するためのStructを定義
リクエスト実行
ポイント
通常のAPIKitの使い方では、リクエストを生成するための構造体にresponse
メソットを定義する。
しかし、Himotokiを使うことで、responseメソッドの処理もGithubRequestプロトコルをExtensionする形で実装させることができる。
こりによりよりコードがシンプルになる。
コードだけみるとRateLimit
構造体のdecode
が呼ばれていないように見えるが、
これのメソッドを呼ぶと内部的にT.decodeを読んでいる。
Himotokiのカスタムオペレータ
Himotokiのdecodeメソッドを見ると<|
という謎のメソッドが使われている。これはカスタムオペレータといういうもので、+
や-
といったようなオペレータを独自で定義する方法である。Himotokiのソースコードを見ると以下のように定義されている。
<|
の左側に記述したものが上のメソッドの第一引数で右側に記述したものが第2引数となる。
複数のモデルをデコード
以下の例は、Github上のリポジトリーを検索し複数のリポジトリーの情報をレスポンスとして返すようなものである。
先程の例と同様に、typealias
に指定したモデル(今回でいうとRepositoryCollection
)のdecodeが内部的に呼ばれる。
さらに、RepositoryCollectionをdecodeする過程で子モデルであるRepositoryモデル
のdecodeも呼ばれるので、結果的にモデル配列をdecodeすることができる。