はじめに
「alamofire async」で検索するとwithCheckedThrowingContinuation
を使ってasyncを使用している記事が多く出てきますが、実は標準でasync/awaitを使えるみたいです。
今回はそのやり方を紹介できたらと思います。
やりかた
String
let response = await AF.request(url, method: .get, headers: headers).serializingString().response
switch response.result {
case .success(let data):
print(type(of: data)) // String
case .failure(let error):
print(type(of: error)) // AFError
}
Data
let response = await AF.request(url, method: .get, headers: headers).serializingData().response
switch response.result {
case .success(let data):
print(type(of: data)) // Data
case .failure(let error):
print(type(of: error)) // AFError
}
Decodable
let response = await AF.request(url, method: .get, headers: headers).serializingDecodable(StatusesShow.self).response
switch response.result {
case .success(let data):
print(type(of: data)) // StatusesShow
case .failure(let error):
print(type(of: error)) // AFError
}
カスタムレスポンス
カスタムレスポンスの作成方法はこちら
let result = await AF.request(url, method: .get, headers: headers).serializingResponse(using: TwitterDecodableResponseSerializer<StatusesShow>()).value
switch result {
case .success(let data):
print(type(of: data)) // StatusesShow
case .failure(let error):
print(type(of: error)) // TwitterError
}
おわり
日本語の記事が1つも見つからなかったので意外と知られてないかも??