Alamofireの基本メモ
Swiftで書かれたHTTP通信に関するライブラリ
request関数
例
パラメータを何も持たないGETリクエスト
override func viewDidLoad() { super.viewDidLoad() Alamofire.request(.GET, "http://localhost/login.json") }
GETメソッドのHTTPリクエストを送っている
第一引数ではHTTPメソッドの指定を行っている。
HTTPメソッドの種類は以下の通り
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" }
第二引数では、URLStringConvertibleプロトコルに準拠した型が入る
以下の4つのようなものがある。
- String
- NSURL
- NSURLComponents
- NSURLRequest
response関数
HTTPリクエストに対してのレスポンスを取り扱う
リクエストからのレスポンス
override func viewDidLoad() { super.viewDidLoad() Alamofire .request(.POST, "http://localhost/content.json") .response() {request, response, data, error in // レスポンスハンドリング } }
メソッドや関数に対しては()の外に関数引数を置く事ができる(Trailing Closure)
レスポンスハンドラのみを引数に持つ、responseを呼んだ際に渡される引数は次の通りです。
- request(第一引数): Foundationフレームワークで HTTPリクエストを表す NSURLRequest のインスタンスです。Requestクラスのリクエスト内容を表します。
- response(第二引数):Foundationフレームワークで HTTPレスポンスのメタデータを表す NSHTTPURLResponse のインスタンスです。
- data(第三引数):HTTPレスポンスに含まれるバイト文字列から生成されるオブジェクトです。このメソッドの場合、NSData のオブジェクトが得られます。
- error(第四引数):HTTP通信エラーを表します。
JSONとして取り扱いたい場合
JSONシリアライザでresponseメソッドを叩くresponseJSONメソッドが用意されている。
public func responseJSON( options: NSJSONReadingOptions = .AllowFragments, // バイト列からJSONオブジェクト書き出しの際のオプションを指定 completionHandler: ( NSURLRequest, // リクエスト内容 NSHTTPURLResponse?, // レスポンスメタデータ AnyObject?, // JSONオブジェクトを示すルートArray or Dictionary NSError?) // エラーオブジェクト -> Void ) // レスポンスハンドラ -> Self // Requestクラス
リクエストからのレスポンス(JSON)
override func viewDidLoad() { super.viewDidLoad() Alamofire .request(.POST, "http://localhost/content.json", parameters: params) .responseJSON {request, response, data, error in // レスポンスハンドリング } }
SwiftyJSONといい感じに連携できるみたいなので、次回はSwiftyJSONの勉強でもしてみようかな。
参考サイト