Swift

Swift: APIKitの超簡単な使用方法


有名ライブラリ、「APIKit」の超簡単な導入を説明します。

注:初心者向けかつ、実践的ではありません。

 

APIKitとは

APIKitはhttpクライアントライブラリです。

jsonをデコードしてくれるHimotokiというライブラリとセットで使用することが多いです。

 

httpクライアントといってもイメージできないかもしれません。

ざっくりいうとwebサーバーとやりとりをする場合に使用します。

Twitterの場合

  • ツイートを取得する
  • いいねを登録する場合
  • etc

つまり、ほとんどのアプリで必要なものになります。

逆に必要のないアプリは、シンプルな「メモ帳」などの自分のスマホ内で完結するようなものは必要ありません。

 

似たような役割のライブラリにAlamofireがあります。

こちらの方が有名かもしれないですね。

 

導入

まずはAPIKitの導入方法を説明していきます。

 

ターミナルでこちらのコマンドを打ってください。

こちらでpodfileを作成してくれます。

 

podfileを編集

podfileって何??という方はこちらです。

swift3:『Cocoapods』の導入方法!

 

podfileに

pod ‘APIKit’

という記述を

target ‘プロジェクト名’ do

end

の間に記述してください。

 

記述できたら、

ターミナルでこちらのコマンドを打ってAPIKitをインストールします。

インストールが完了したら

実際にコードを書いていきます。

 

1, APIKitの使い方

基本形はこちらです!

APIKitを使う上で大切なことはこの基本の形をできる限り崩さないことです。

 

Session.send

Session.sendというAPIKitの便利メソッドあるので、基本的にガンガン使っていきます!

このメソッドの引数にリクエストを入れます。

リクエストとはhttpリクエストのことです。

  • どのURLに対して、
  • どのメソッドで、
  • パラメータはこんな感じで、

などなどですね。

 

この辺は少しWeb系の勉強をしないとピンとこないかもしれませんね、、、

 

result

resultはリクエストを送った結果です。

resultには「成功・失敗」「json形式のデータ」などが入っています。

それを、成功(success)か失敗(failure)によって処理をわけて記述します。

 

2, 実際のコード

今回は受け取ったデータをprintするだけにします。

Session.sendの引数に入れるリクエストはまだ作成していないのでひとまず空にしておいてください。

3, リクエストのコード

Request.swiftというファイルを作成してください。

上から順番にいきます。

protocol GitHubRequest: Request {}

APIKitが持っているRequestプロトコルに準拠したGitHubRequestを作成しました。

 

extension GitHubRequest {}

上で作成したGitHubRequestをプロトコルエクステンションで

デフォルトのbaseURLを設定します。

今回はGithubのAPIを利用していきます。

 

FetchRepositoryRequest: GitHubRequest {}

ここではいわゆるエンドポイントを設定しています。

GitHubRequestとFetchRepositoryRequestを分けているのがとても大切です。

baseURLをもつGitHubRequestを準拠する形にすることで、

複数のエンドポイントを用意する場合に楽になります。(今回は1つしかエンドポイントを用意しないため、メリットはあまりないです。。。)

 

path

今回は「特定のUserの持っているリポジトリの情報を取得する」というエンドポイントを設定するため、

pathは/users/\(userName)/repos になります。

なので、userNameを入れるプロパティも必要ですね。

 

typealias

typealias Response = [Any] の部分は今度別の記事を書きたいと思います。

 

とりあえず、Responseの型を[Any]にしているということです。

 

httpMethod

GETに指定します。

 

func response

そして最後にリクエストの結果のレスポンスを受け取って、jsonのデータをデコードしたりする部分です。(今回はprintするだけなのでデコードしません)

大切なのは、typealiasで指定した型を返り値の型に使用して、しっかりとreturnする値を合わせることです。

 

これでリクエストが完成しました。

 

Session.sendを完成させる

先ほどviewDidLoad内に記述したSession.sendの引数を空っぽにしていたのでリクエストを格納したいと思います。

これで完成です!

“sasao”の部分には適当な名前を入れてください。
Githubのアカウントをお持ちの方はご自身のアカウント名を入れてみてください。

これで実行すると、デバックエリアにjsonのデータが出力されます!!

 

次回:「APIKitとHimotokiは仲良し!」


コメントを残す

*