AlamofireはSwiftで書かれたHTTPネットワークライブラリです。作者はAFNetworkingのメインコミッターとしても有名なMatttさんです。9月7日時点でまだ21コミットほどしかありませんが、GitHubスターも3500ほどあり、機能としても実用十分なものを備えています。コードを見てみるとSwiftのパワフルな特性と活かした非常に簡素で可読性の高い記述がされています。コードも1000行ほどでSwiftの勉強教材としても大変役に立つかと思います。
機能
以下の機能があります。AFNetworkingにあるUIImageViewの拡張はありません。
- Chainable Request / Response methods
- URL / JSON / plist Parameter Encoding
- Upload File / Data / Stream
- Download using Request or Resume data
- Authentication with NSURLCredential
- Progress Closure & NSProgress
- cURL Debug Output
必要環境
- Xcode 6 Beta 6
- iOS 7.0+ / Mac OS X 10.9+
インストール
- Alamofire.xcodeprojをプロジェクトにドラッグして追加します
- Build PhasesのTarget DependenciesにAlamofireを追加します
- AlamofireをImportします
import Alamofire
以上で利用できる状態となります。
使い方
Alamofireの使い方の一部抜粋です。そのたはAlamofireのREADMEをご確認ください。
GET Request
Alamofireのリクエストオブジェクトを作成します。
Alamofire.request(.GET, "http://httpbin.org/get")
With Parameters
リクエストパラメーターをセットします。
Alamofire.request(.GET, "http://httpbin.org/get", parameters: ["foo": "bar"])
With Response Handling
リクエストオブジェクトのレスポンスメソッドをコールすると非同期通信が開始され、完了時にクロージャが実行されます。
Alamofire.request(.GET, "http://httpbin.org/get", parameters: ["foo": "bar"])
.response { (request, response, data, error) in
println(request)
println(response)
println(error)
}
With Response String Handling
レスポンスをStringで受け取りたい場合は、responseStringをコールします。
Alamofire.request(.GET, "http://httpbin.org/get", parameters: ["foo": "bar"])
.responseString { (request, response, string, error) in
println(string)
}
HTTP Methods
RFC 2616 に定義されている HTTP methods がenumとして利用できます。
public enum Method: String {
case OPTIONS = "OPTIONS"
case GET = "GET"
case HEAD = "HEAD"
case POST = "POST"
case PUT = "PUT"
case PATCH = "PATCH"
case DELETE = "DELETE"
case TRACE = "TRACE"
case CONNECT = "CONNECT"
}
Alamofire.request(.POST, "http://httpbin.org/post")
Alamofire.request(.PUT, "http://httpbin.org/put")
Alamofire.request(.DELETE, "http://httpbin.org/delete")
POST Request
POSTリクエストはDictionary形式でパラメーターを渡すと、自動的にリクエストボディにセットして送信してくれます。
let parameters = [
"foo": "bar",
"baz": ["a", 1],
"qux": [
"x": 1,
"y": 2,
"z": 3
]
]
Alamofire.request(.POST, "http://httpbin.org/post", parameters: parameters)
foo=bar&baz[]=a&baz[]=1&qux[x]=1&qux[y]=2&qux[z]=3
Parameter Encoding
パラメーターエンコーディングを変更することでJSON形式でリクエストパラメーターを送ることもできます。
enum ParameterEncoding {
case URL
case JSON(options: NSJSONWritingOptions)
case PropertyList(format: NSPropertyListFormat,
options: NSPropertyListWriteOptions)
func encode(request: NSURLRequest,
parameters: [String: AnyObject]?) ->
(NSURLRequest, NSError?)
{ ... }
}
POST Request with JSON Response
JSON形式で受領したレスポンスをでシリアライズしてDictionary形式で受け取る方法です。リクエストに対してresponseJSONをコールします。
Alamofire.request(.POST, "http://httpbin.org/post", parameters: parameters, encoding: .JSON(options: nil))
.responseJSON {(request, response, JSON, error) in
println(JSON)
}
Built-In Response Methods
レスポンス形式は以下のように選択できます。
response()
responseString(encoding: NSStringEncoding)
responseJSON(options: NSJSONReadingOptions)
responsePropertyList(options: NSPropertyListReadOptions)
License
Alamofire is released under an MIT license. See LICENSE for more information.
まとめ
Swiftらしい記述で手軽にHTTP通信が行えます。作者も実績のあり著名なMatttさんなので安心です。
Swiftのコードレーディングにも大変おすすめな実装です。自分も大変勉強になりました。