AFNetworking
の作者であるMattt ThompsonさんがHTTP通信用ライブラリとしてSwiftで開発したAlamofire
を試してみました。
Alamofire
はこちらからDLできます。
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)
}
NSURLCredential
とNSURLProtectionSpace
を使った認証は下記のように設定します。
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
を利用するのもよいと思います。