๐ Alamofire ?
- ๋น๋๊ธฐ๋ก ์ํํ๋ swift๊ธฐ๋ฐ์ HTTP ๋คํธ์ํน ๋ผ์ด๋ธ๋ฌ๋ฆฌ (ํต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ)
Alamofire ์ค์น ๋ฐ ์ฌ์ฉ ์ค๋น
1. ์ผ๋จ CocoaPod ์ค์น
2. Alamofire ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
pod 'Alamofire', '~> 5.2'
3. Import
import Alamofire
API GET
๊ฐ์ง๊ณ ์ฌ ๋ฐ์ดํฐ List
GET ๋ฉ์๋ ์์ฑ ๋ฐฉ๋ฒ
1. url : API ์ฃผ๊ณ
2. method : ํต์ ๋ฐฉ์
3. parameters : post ํต์ ์ ํ์
4. encoding : URL์ด๊ธฐ ๋๋ฌธ์, URLEncoding
5. headers : json ํ์์ผ๋ก ๋ฐ๊ฒ๋
6. validate : ํ์ธ์ฝ๋
7. responseJSON : ๋ฐ์ดํฐ ๋ฐ๋ ๋ถ๋ถ
import Alamofire
func getData(_ completedHandler : @escaping (Data)->Void){
let url = "https://vjsel.herokuapp.com/book/comments/1"
AF.request(
url,
method: .get,
parameters: nil,
encoding: URLEncoding.default,
headers: ["Content-Type":"application/json", "Accept":"application/json"]
)
.validate(statusCode: 200..<500)
.responseJSON(completionHandler: { response in
switch response.result{
case .success:
guard let result = response.data else {return}
do {
let decoder = JSONDecoder()
let json = try decoder.decode(Data.self, from: result)
completedHandler(json)
} catch {
print("error!\(error)")
}
default:
return
}
})
}
.responseJSON , ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋ ๋ถ๋ถ์ ๋ ์์ธํ ๋ด๋ณด์
.responseJSON(completionHandler: { response in
switch response.result{
case .success:
guard let result = response.data else {return}
do {
let decoder = JSONDecoder()
let json = try decoder.decode(Data.self, from: result)
completedHandler(json)
} catch {
print("error!\(error)")
}
default:
return
}
})
- response.result๋ก ์ฒ๋ฆฌ ์ํ๋ฅผ ํ์ธ == .success ์ผ ๊ฒฝ์ฐ ์ ์์ฒ๋ฆฌ
๐ JSONDecoder()
- JSON ํ์ฑ ํด๋์ค
- ์ฒซ๋ฒ์งธ ํ๋ผ๋ฏธํฐ : ๊ตฌ์กฐ์ฒด ํ์ → ํด๋น ๊ตฌ์กฐ์ฒด์ ๋ง๊ฒ JSON ์ ํ์ฑํด์ค๋ค.
- ๋๋ฒ์งธ ํ๋ผ๋ฏธํฐ(from: ) : ๋์ด์จ ๋ฐ์ดํฐ
- ์์ ์ Data.self ํ์ ์ผ๋ก ๋๊ฒจ์ง ๊ตฌ์กฐ์ฒด๋ ๋ค์๊ณผ ๊ฐ๋ค. (Decodable ํ๋กํ ์ฝ์ ์ฑํํ ๊ตฌ์กฐ์ฒด์ฌ์ผ ํ ๊ฒ)
struct Data: Decodable {
var comments: [Comment]
}
struct Comment: Decodable, Hashable {
let _id: String
let content: String
let userId: String
let createdAt: String
let updateAt: String
}
extension Comment {
static var list = [
Comment(_id: " ", content: "ใ
ใ
", userId: "ใ
ใ
", createdAt: "ใ
ใ
", updateAt: "ใ
ใ
")
]
}
๐ซ ํด๋น ๊ตฌ์กฐ์ฒด์๋ ๊ผญ ๋ฐ์ดํฐ์ ์๋ณ์(_ id)๊ฐ ๋ค์ด๊ฐ์ผ ๋ฐ์ดํฐ๊ฐ ์ ๋ถ ์ ํ์ฑ๋๋ค.
๐ Completion Handler?
- ์ด๋ ํ ์ผ์ด ๋๋ฌ์ ๋ ํํด์ผ ํ ์ผ
- ํด๋น ์์ ์์๋ ์๋ฒ์์ ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ฅผ json ํ์ฑํ์ฌ CompletionHandler์ ์ธ์๋ก ๋ฃ์ด์ฃผ๊ณ ์๋ค.
- ๋คํธ์ํฌ์์๋ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ return์ผ๋ก ๋ฐํํด์ฃผ์ง ๋ชปํด์ ์ด๋ฐ ๋ฐฉ์์ผ๋ก ๋ง์ด ์ฌ์ฉํจ!
'iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS] Push alarm (Local) (0) | 2022.10.26 |
---|---|
[iOS] ์นด์นด์ค ์์ ๋ก๊ทธ์ธ ๊ตฌํ (0) | 2022.10.25 |
[iOS] youtube-ios-player-helper ๋ก ์ ํ๋ธ ์์ ํ๋ ์ด์ด ๋ทฐ ๋ง๋ค๊ธฐ (0) | 2022.10.21 |
[iOS] CocoaPods ์ค์น ๋ฐ Xcode ์ฐ๋ (0) | 2022.10.21 |
[iOS] ํ๋์ Storyboard์๋ ํ๋์ View controller ๋ง! (0) | 2022.10.20 |