URLセッションとAlamfore
16352 ワード
こんにちはジェジェロです😊
個人的なプロジェクトを行う過程でよく使われていますが、この2つのライブラリの違いがよく分からないので、この機会にまとめておきたいと思います.
アプリケーションは通常、サーバと通信する際にREST APIを使用します.HTTP通信用のSWIFT内のライブラリ.
URLセッションでは、認証サポートのためのインクリメンタル・ゲートウェイ・メソッドが多数用意されており、アプリケーションが実行されていないか、一時停止している間にバックグラウンド・タスクを介してコンテンツをダウンロードできます.
URLセッションは、URLセッションオブジェクトが所有するコンフィギュレーションプロセスオブジェクトによって決定される3種類のセッションを提供します.
1.Default Session基本通信用(Cookieと同じ記憶オブジェクトを用いる) .
2.Ephemeral Session Cookieまたはキャッシュを格納しないポリシーを使用する場合は を使用する.
3.Background Sessionアプリケーションがバックグラウンドにあるときのコンテンツのダウンロード/アップロード
URLSessionTaskセッション操作を表す抽象クラス.
1つのセッションでは、URLセッションクラスは、データタスク、アップロードタスク、ダウンロードタスクの3つのタスクタイプをサポートします.
URLSessionDataTask:HTTPの様々な方法でサーバから応答データを受信し、データオブジェクトを取得する
URL Session UploadTask:アプリケーションからWebサーバにデータオブジェクトまたはファイルデータをアップロードし、主にPOSTまたはPUTメソッドを使用する
URLSessionDownloadTask:サーバからデータをダウンロードし、ファイルとして格納します.アプリケーションがスタンバイ状態または非稼働状態の場合は、バックグラウンド状態で詳細をダウンロードできます.
JSON、XML、HTMLなどの単純なデータの転送では、主にデータ操作が使用されます.容量の大きいファイルでは、アプリケーションがバックグラウンドにあるときに転送するために、主にアップロード(ダウンロード)操作が使用されます.
💡 コードの例
💡 AlamofreはSWIFTベースのHTTPネットワークライブラリであり、Appleベースネットワークベースのインタフェースを提供し、一般的なネットワーク操作を簡素化しています.
すなわち、Alamofreは、既存のURLセッションに基づいてURLセッションをWrappingしたライブラリである.接続可能要求/応答方法 URL/JSON/plistパラメータ符号化 ファイル/データ/ストリーム/複数部分フォームデータアップロード リクエストまたはResumeデータを使用して をダウンロード NSURLCrementialによる認証 HTTPリスニング検証 TLS証明書と公開鍵Pinning 進捗モジュールおよびNSProgress cURLデバッグ出力 全面的なユニットテスト保証 完全なドキュメント化 様々な機能を提供しています.
すなわち,Alamofileを用いてコードを簡略化し,より読み取り可能にすることが多い.
💡 コードチェックを使用したURLセッション、Alamofireの違い
さらにCompletionHandlerは、成功したかどうかを個別にチェックする必要があります.
このコードをAlamofireに変換
requestメソッドのパラメータにはhttp通信パラメータが含まれ、符号化値でパラメータを符号化する方法と、値を伝達する方法を指定します.
URLEncoding.defaultはget,head,deleteでqueryパラメータとして貼り付け,残りの場合http bodyとして値を渡す.
検証はまた、有効性チェックを行うこともできます.
responseJSONやresponseDataなどの受信データに応答するフォーマットを設定できます.
以前Alamofireを勉強していた頃はNOTIONの内容にまとめられていましたが、ブログが始まる頃には、移動しながら読み返していて、新しい感じもありました.書くだけで読まないと忘れてしまうので、よく書いた文章を読みます!
ありがとうございます.😊
いつでもご健康のご指導をお待ちしております
個人的なプロジェクトを行う過程でよく使われていますが、この2つのライブラリの違いがよく分からないので、この機会にまとめておきたいと思います.
💡 URLセッションとは?
アプリケーションは通常、サーバと通信する際にREST APIを使用します.HTTP通信用のSWIFT内のライブラリ.
URLセッションでは、認証サポートのためのインクリメンタル・ゲートウェイ・メソッドが多数用意されており、アプリケーションが実行されていないか、一時停止している間にバックグラウンド・タスクを介してコンテンツをダウンロードできます.
💡 URLセッションのタイプ
URLセッションは、URLセッションオブジェクトが所有するコンフィギュレーションプロセスオブジェクトによって決定される3種類のセッションを提供します.
1.Default Session
2.Ephemeral Session
3.Background Session
💡 URLSessionTask
URLSessionTaskセッション操作を表す抽象クラス.
1つのセッションでは、URLセッションクラスは、データタスク、アップロードタスク、ダウンロードタスクの3つのタスクタイプをサポートします.
URLSessionDataTask:HTTPの様々な方法でサーバから応答データを受信し、データオブジェクトを取得する
URL Session UploadTask:アプリケーションからWebサーバにデータオブジェクトまたはファイルデータをアップロードし、主にPOSTまたはPUTメソッドを使用する
URLSessionDownloadTask:サーバからデータをダウンロードし、ファイルとして格納します.アプリケーションがスタンバイ状態または非稼働状態の場合は、バックグラウンド状態で詳細をダウンロードできます.
JSON、XML、HTMLなどの単純なデータの転送では、主にデータ操作が使用されます.容量の大きいファイルでは、アプリケーションがバックグラウンドにあるときに転送するために、主にアップロード(ダウンロード)操作が使用されます.
💡 コードの例
// URLSessionConfiguration 생성 (세 가지 존재): .default / .ephemeral / .background
let config = URLSessionConfiguration.default
let session = URLSession(configuration: config)
// URLComponents를 생성하여 query 설정
var urlComponents = URLComponents(string: "https://ios-development.tistory.com/search/users?")
let userIDQuery = URLQueryItem(name: "id", value: "123")
let ageQuery = URLQueryItem(name: "age", value: "20")
urlComponents?.queryItems?.append(userIDQuery)
urlComponents?.queryItems?.append(ageQuery)
// URLComponents와 URLSession을 이용하여 URLSessionDataTask 생성
guard let requestURL = urlComponents?.url else { return }
// let request = URLRequest(url:requestURL)
// method나 header를 지정해야 할 때 request 객체 생성해서 프로퍼티로 지정
let dataTask = session.dataTask(with: requestURL) { (data, response, error) in
// error가 존재하면 종료
guard error == nil else { return }
// status 코드가 200번대여야 성공적인 네트워크라 판단
let successsRange = 200..<300
guard let statusCode = (response as? HTTPURLResponse)?.statusCode,
successsRange.contains(statusCode) else { return }
// response 데이터 획득, utf8인코딩을 통해 string형태로 변환
guard let resultData = data else { return }
let resultString = String(data: resultData, encoding: .utf8)
print(resultData)
print(resultString)
}
// network 통신 실행
dataTask.resume()
ではAlamforeは何ですか?
💡 AlamofreはSWIFTベースのHTTPネットワークライブラリであり、Appleベースネットワークベースのインタフェースを提供し、一般的なネットワーク操作を簡素化しています.
すなわち、Alamofreは、既存のURLセッションに基づいてURLセッションをWrappingしたライブラリである.
すなわち,Alamofileを用いてコードを簡略化し,より読み取り可能にすることが多い.
💡 コードチェックを使用したURLセッション、Alamofireの違い
// URL Session Code
var request = URLRequest(url: URL(string: "https://api.github.com/users")!)
request.httpMethod = "POST"
let params = ["id":id, "password":password] as Dictionary
do {
try request.httpBody = JSONSerialization.data(withJSONObject: params, options: [])
} catch {
return
}
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: request, completionHandler: {(data, response, error) -> Void in
if let response = response as? HTTPURLResponse, 200...299 ~= response.statusCode {
//SUCCESS
}else{
//Failure
}
})
requestオブジェクトを作成する場合は、メソッドを設定し、パラメータをディック値に設定してJSONに符号化してhttpbodyに、タイトルをaddValueに入れる必要があります.さらにCompletionHandlerは、成功したかどうかを個別にチェックする必要があります.
このコードをAlamofireに変換
AF.request("https://api.github.com/users", method: .get, parameters: param, encoding: URLEncoding.default, headers: ["Content-Type":"application/json", "Accept":"application/json"])
.validate(statusCode: 200..<300)
.responseJSON { (response) in
if let JSON = response.result.value
{
print(JSON)
}
}
簡単に変えられるrequestメソッドのパラメータにはhttp通信パラメータが含まれ、符号化値でパラメータを符号化する方法と、値を伝達する方法を指定します.
URLEncoding.defaultはget,head,deleteでqueryパラメータとして貼り付け,残りの場合http bodyとして値を渡す.
検証はまた、有効性チェックを行うこともできます.
responseJSONやresponseDataなどの受信データに応答するフォーマットを設定できます.
の最後の部分
以前Alamofireを勉強していた頃はNOTIONの内容にまとめられていましたが、ブログが始まる頃には、移動しながら読み返していて、新しい感じもありました.書くだけで読まないと忘れてしまうので、よく書いた文章を読みます!
ありがとうございます.😊
いつでもご健康のご指導をお待ちしております
Reference
この問題について(URLセッションとAlamfore), 我々は、より多くの情報をここで見つけました https://velog.io/@zaezero/URL-Session과-Alamofireテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol