AFNetworkingのSwift版とも言えるAlamofireを試してみた

More than 3 years have passed since last update.

AFNetworkingの作者であるMattt ThompsonさんがHTTP通信用ライブラリとしてSwiftで開発したAlamofireを試してみました。

AlamofireはこちらからDLできます。

https://github.com/Alamofire/Alamofire

Sourceディレクトリ直下にあるAlamofire.swiftをXcodeプロジェクトにドラッグするだけで使用できます。

使い方は例を見てもらえば分かると思いますが非常にシンプルです。

下記はレスポンスをNSDataで取得する例です。

Alamofire.request(.GET, "http://...")

.response { (request, response, data, error) in
println(request)
println(response)
println(error)
}

Stringでレスポンスを取得したい場合、responseStringを使用します。

Alamofire.request(.GET, "http://...")

.responseString { (request, response, string, error) in
println(string)
}

JSON形式で取得した場合、responseJSONを使用します。

Alamofire.request(.GET, "http://...")

.responseJSON {(request, response, JSON, error) in
println(JSON)
}

メソッドチェーンを利用して下記のように複数の形式での結果を同時に処理できます。

Alamofire.request(.GET, "http://...")

.responseJSON { (request, response, JSON, error) in
println(JSON)
}
.responseString { (request, response, string, error) in
println(string)
}

パラメータを設定する場合は下記のようにparametersを設定します。

Alamofire.request(.GET, "http://...", parameters: ["foo": "bar"])

パラメータをJSONにしたい場合、下記のようにJSONでエンコードするように設定します。

Alamofire.request(.POST, "http://...", parameters: parameters, encoding: .JSON(options: nil))

.responseJSON {(request, response, JSON, error) in
println(JSON)
}

ベーシック認証も簡単に設定できます。

let user = "user"

let password = "password"

Alamofire.request(.GET, "https://...")
.authenticate(HTTPBasic: user, password: password)
.response {(request, response, _, error) in
println(response)
}

NSURLCredentialNSURLProtectionSpaceを使った認証は下記のように設定します。

let user = "user"

let password = "password"

let credential = NSURLCredential(user: user, password: password, persistence: .ForSession)
let protectionSpace = NSURLProtectionSpace(host: "...", port: 0, `protocol`: "https", realm: nil, authenticationMethod: NSURLAuthenticationMethodHTTPBasic)

Alamofire.request(.GET, "https://...")
.authenticate(usingCredential: credential, forProtectionSpace: protectionSpace)
.response {(request, response, _, error) in
println(response)
}

ソースコードは一つのファイルに集約されており、使い方も非常にシンプルで使いやすいです。

もっと詳細を知りたい方は直接ソースコードを見るのが一番よいかと思います。

SwiftでHTTP通信周りを実装するのはこれまでのようにAFNetworkingでも特に問題ありませんが、AlamofireはSwiftのみで実装されており、シンプルかつ使いやすいです。

今後Swiftで開発を行うのであれば、このAlamofireを利用するのもよいと思います。