186
185

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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)
    }

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を利用するのもよいと思います。

186
185
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
186
185

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?