์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- UIKit
- Xcode
- ๋ฐฑ์ค
- rxcocoa
- realm
- XCTest
- arkit
- TCA
- BOJ
- Flutter
- ํจ์คํธ์บ ํผ์ค
- visionOS
- ios
- tableView
- Kuring
- designpattern
- MVVM
- RxSwift
- SwiftUI
- combine
- node.js
- BFS
- CollectionView
- Lv2
- reactorkit
- SnapKit
- raywenderlich
- swift
- Swfit
- ํ๋ก๊ทธ๋๋จธ์ค
- Today
- Total
lgvv98
Alamofire ๋ผ์ด๋ธ๋ฌ๋ฆฌ ( + CocoaPods ๊ฐ๋ ) ์ค์น ๋ฐ ์ฌ์ฉ๋ฒ ๋ณธ๋ฌธ
Alamofire ๋ผ์ด๋ธ๋ฌ๋ฆฌ ( + CocoaPods ๊ฐ๋ ) ์ค์น ๋ฐ ์ฌ์ฉ๋ฒ
๐ฅ ์บ๋ฟ๋งจ 2021. 4. 23. 11:38Alamofire๋ HTTP ๋คํธ์ํน์ ์ํด ์ค์ํํธ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐ๋ ๋น๋๊ธฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, URLRequest + URLSession ๊ฐ์ฒด๋ฅผ ๋ํํ ๊ฐ๊ฒฐํ ๊ตฌ์ฑ ๋๋ถ์ ๋ชจ๋ฐ์ผ ์๋ฒ์ HTTPํต์ ์ ๊ตฌํํ ๋ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค. ๋ชจ๋ฐ์ผ API ํธ์ถ ์ญ์ Alamofire๋ฅผ ์ด์ฉํ๋ฉด ๋ ์ฝ๊ณ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์์ต๋๋ค.
์ฅ์ ์ ์๋ฒ๋ก ๋ณด๋ผ ์์ฒญ์ ๊ฐํธํ๊ฒ ๊ตฌ์ฑ ๊ฐ๋ฅ
์๋ฒ์ ์๋ต ์ปจํ ์ธ ํ์ ์ ๋ง์ถ์ด ์ฌ์ฉ ๊ฐ๋ฅํ ๋ค์ํ ๋ฉ์๋ ์ ๊ณต
์๋ฅผ๋ค๋ฉด JSON ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ์ ์ฉ ๋ฉ์๋๋ผ๋๊ฐ, ๋ฐ์ด๋๋ฆฌ ํ์ผ์ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ์ ์ฉ ๋ฉ์๋, ๋์ฉ๋ ํ์ผ์ ๋ด๋ ค๋ฐ๊ธฐ ์ํ ๋ค์ด๋ก๋ ๋ฉ์๋ ๋ฑ
ํนํ JSON ์ ์ฉ ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ฉด ์๋ฒ๋ก๋ถํฐ ๋ฐ์ ๊ฒฐ๊ณผ๊ฐ์ ์์ฝ๊ฒ ํ์ฑํ ์ ์๋ค.
๋ํ ๋ค์ด๋ก๋ ๋ฉ์๋์์๋ ๋ค์ด๋ก๋ ์งํ ์ ๋ณด๋ฅผ ํจ๊ป ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์ด์ฉํ๋ฉด ์ฌ์ฉ์์๊ฒ ๋ค์ด๋ก๋ ๊ณผ์ ์ ์ค๊ณํ ์๋ ์๋ค.
์ฌ์ฉ๋ฒ
1. Xcode ๋ฉ๋ด์์ [Source Control] --> [Clone] ์ ํ
2. https://github.com/Alamofire/Alamofire.git ์ ๋ ฅํ์ฌ ๋ด๋ ค๋ฐ๊ธฐ
3. ์ ์ฅ์์น๋ฅผ ์ ํํ์ฌ ํ๋ก์ ํธ๋ฅผ ์์ฑ
--> ์ด๋ ์ ์ฅ์์น๋ ์ฑ ํ๋ก์ ํธ์ ํ์๋ก ์ก์์ฃผ๋ ๊ฒ์ด ์ข์๋ฐ ์๋ํ๋ฉด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ์ ์ง์ ๋ณต์ฌํด๋ ๊ฐ๋ฅํ์ง๋ง ํ๊น ์์กด์ฑ ์ค์ ์ ํตํด ์ฑ ์ปดํ์ผ ์ ์๋์ผ๋ก Alamofire๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํฌํจ๋๊ฒ ํ ์์ ์ด๋ผ ์ด ์ฐ๊ฒฐ์ ๋์ ์ด์ด์ ํ๋ก์ ํธ๊ฐ ์งํ๋๋ ๋์ ์ญ์ ๋๊ฑฐ๋ ์ฎ๊ฒจ์ ธ์๋ ์๋๊ธฐ ๋๋ฌธ์ด๋ค. ** ์ด๋ฅผ Alamofire ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ธฐ์กด ํ๋ก์ ํธ์ ์๋ธ ๋ชจ๋๋ก ์ค์นํ๋ค ๋ผ๊ณ ํํํ๋ค.
ex)
appFolder
- Alamofire
- my-app
- my-app.xcodeproj
4. ๋์ ์ผ๋ก ์ฐ๊ฒฐํ๊ธฐ ์ํด ๊ธฐ์กด ํ๋ก์ ํธ์ ์ฐ๊ฒฐํ๊ณ ํ๊น ์์กด์ฑ์ ์ค์ ํด์ผ ํ๋๋ฐ ์์ฑ๋ Alamofire ํ๋ก์ ํธ๋ฅผ ํ์๊ธฐ๋ก ์ด๊ณ , Alamofire.xcodeproj ํ์ผ์ ๊ธฐ์กด ํ๋ก์ ํธ์ ๋๋๊ทธ ํ์ฌ ์ถ๊ฐํ๋ค.
5. ํ๊น์์กด์ฑ ์ค์ ์ ์ํด
5-1) Xcode ๋ค๋น๊ฒ์ดํฐ์์ ๋ด๊ฐ ์งํํ๊ณ ์ ํ๋ ํ๋ก์ ํธ๋ฅผ ์ ํ
5-2) ์ค์์ ํธ์ง์ฐฝ ์ข์ธก ํจ๋์์ TARGETS ์์ญ์ ํ์ผ์ ์ ํ
5-3) Builds Phases๋ฅผ ์ ํ
5-4) Dependencies ํญ๋ชฉ์ ๋ด๋ถ์์ [+]๋ฅผ ํด๋ฆญํ์ฌ ๋ด๊ฐ ๋ง๋๋ ๊ฒ์ ํน์ฑ์ ๋ง๊ฒ (ios,macos ๋ฑ) ์ ํํ์ฌ ์ถ๊ฐ
6. ์ดํ์ viewController.swift ์ import Alamofire ์์ฑ ํ ์ปค๋งจํฐ+b ๋ฅผ ํตํ์ฌ ๋น๋๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ด๋ฃจ์ด ์ง๋์ง ํ์ธ.
๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก๋ ์ค์นํ๋ ๋ฐฉ๋ฒ์ด ์๋๋ฐ CocoaPods์ ๋ํด์ ์์๋ณด๊ณ ๊ฐ์
CocoaPods์ด๋? ์ฝ์ฝ์ ํ๋ก์ ํธ์ ๋ํ ์์กด์ฑ ํจํค์ง๋ฅผ ๊ด๋ฆฌํ๋ ๋๊ตฌ๋ค. ์ฝ๊ฒ ๋งํด์ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ๋จํ๊ฒ ์ค์นํ ์ ์๊ฒ ๋์์ฃผ๋ ์ ํธ!
๊ณผ๊ฑฐ์๋ ๊ฐ๋ฐ์๊ฐ ์ธ๋ถ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ ์ ๋ฐ์ดํธ๊ฐ ์ด๋ฃจ์ด์ง์ง ์์๊ธฐ ๋๋ฌธ์ ๋ฒ์ ๊ด๋ฆฌ๋ ์์ ํ ๊ฐ๋ฐ์์ ์ฑ์ค์ฑ์ ๋ฌ๋ ค ์์๋ค. ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ๋ฒ์ ์ผ๋ก ์ ๋ํ๊ธฐ ์ํด์๋ ๊ฐ๋ฐ์๊ฐ ๊พธ์คํ ๊ด์ฌ์ ๊ฐ๊ณ ๋ฒ์ ์ ๋ฐ์ดํธ ์ฌ๋ถ๋ฅผ ํ์ธํด์ผ ํ๋ค. ๊ฐํน ์ํํ ๊ฒฝ์ฐ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ๊ธฐ๋ ํ๋ค.
์ต๊ทผ์๋ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ์ค์ด๊ณ ๊ฐ๋ฐ ์์ฐ์ฑ ํฅ์์ ์ํด ์ฃผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์คํํ์ฌ ๊ด๋ฆฌํด์ฃผ๋ ๋๊ตฌ๋ค์ด ๋ง์ด ์๊ฒจ๋ฌ๋๋ฐ, ์ฐ๋ฆฌ๋ ์ด ์ ํธ์ ์ฌ์ฉํ์ฌ ์ฑ ํ๋ก์ ํธ์ ์ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ฝ๊ฒ ์ค์นํ๊ณ ๋ฒ์ ๊น์ง ๊ด๋ฆฌํ ์ ์๊ฒ ๋์๋๋ฐ, ์ด๊ฒ์ ํจํค์ง ๊ด๋ฆฌ ๋๊ตฌ ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๋ํ์ ์ธ ํจํค์ง ๊ด๋ฆฌ๋๊ตฌ๋ CentOS ๊ณ์ด์ ๋ฆฌ๋ ์ค์์ ์ฌ์ฉํ๋ yum, Fedora ๊ณ์ด์ ๋ฆฌ๋ ์ค์์ ์ฌ์ฉํ๋ apt-get, ํ์ด์ฌ ํจํค์ง๋ฅผ ๊ด๋ฆฌํ๋ pip, ๋ฃจ๋น ํจํค์ง๋ฅผ ๊ด๋ฆฌํ๋ gem, node.js ํจํค์ง๋ฅผ ๊ด๋ฆฌํ๋ npm, ์๋ฐ์ MAVEN ๋ฑ์ด ์๋ค. ์ด๋ค์ ๋ด๋ถ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์คํํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชฉ๋ก์ ์ ๊ณตํ๊ณ ์์ผ๋ฉฐ, ์ด์ค์์ ์ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฒ์ํ์ฌ ๊ฐํธํ๊ฒ ์ค์นํ ์ ์๋ค.
์ ํ ๊ฐ๋ฐํ๊ฒฝ์์๋ ์ฝ์ฝ์ํ์ ์ ์ธํ๊ณ 2๊ฐ๊ฐ ๋ ์๋๋ฐ,
Carthage์ ์ค์ํํธ ํจํค์ง ๊ด๋ฆฌ์ (Swift Package Manager , SPM) ์ด๋ค.
์ฝ์ฝ์ํ์ ๋ฃจ๋น ์ธ์ด๋ฅผ ์ด์ฉํ์ฌ ๋ง๋ค์ด์ง ํจํค์ง ์์กด์ฑ ๊ด๋ฆฌ ๋๊ตฌ๋ก์, ์ง์ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ Pod์ด๋ผ๋ ๊ฐ๋ ์ผ๋ก ๋ค๋ฃฌ๋ค. ๋ฐ๋ผ์ ์ฝ์ฝ์ํ์ด๋ผ๋ ์ด๋ฆ์ ์ฝ์ฝ์ ๊ฐ๋ฐํ๊ฒฝ + ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด๋ผ๋ ์๋ฏธ๋ฅผ ๋ํ๋ด๋ ๊ฒ์ด๋ค.
์ ๊ทธ๋ผ CocoaPod์ ์ด์ฉํ์ฌ ์ค์นํด๋ณผ๊น? ์ฐ์ ์์ ๋ฐฉ๋ฒ์ผ๋ก ์ค์นํ๋ค๋ฉด Alamofire.xcodeproj ์ MoveTrash๋ก ์ญ์ ํ๊ณ ํด๋๋ฅผ ์ด์ด์ Alamofire๋ฅผ ์ง์ด๋ค์์ ์คํํด๋ณด์
์ค์น์์
1. ํฐ๋ฏธ๋์ ์ด์ด์ sudo gem install cocoapods
sude : root ๊ถํ์ผ๋ก ์คํํ๋ผ
gem : ๋ฃจ๋น ์ธ์ด์์ ์ฌ์ฉํ๋ ์์กด์ฑ ํจํค์ง ๊ด๋ฆฌ ๋๊ตฌ๋ฅผ ์คํํ๋ผ
install cocoapods : ์ฝ์ฝ์ํ์ ์ค์นํ๋ผ๋ ์ต์ gem์ macOS์ ๊ธฐ๋ณธ์ผ๋ก ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ค์น ๊ณผ์ ์์ด ๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
** ๊ฐํน ๋งฅ์ ์ฒ์ ์ค์นํด์ ๊ทธ๋๋ก ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ฃจํธ ํจ์ค์๋๊ฐ ์ค์ ๋์ง ์์ ์๋ ์๋ค. ์ด ๊ฒฝ์ฐ์๋ ๋ฃจํธ ํจ์ค์๋๋ฅผ ์ค์ ํ๋ ๊ณผ์ ์ด ์ ํ๋์ด์ผ ํ๋ค.
2. ๋ค์์ Alamofire ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๋ ๊ฒ
2-1) ์ฐ์ ํฐ๋ฏธ๋์์ cd ๋ฅผ ์ด์ฉํ์ฌ ๋ด ํ๋ก์ ํธ ํด๋๋ก ์ด๋ํ๋ค.
2-2) ํ๋ก์ ํธ ํด๋๋ก ์ด๋ํ์ผ๋ฉด pod init ์ ํฐ๋ฏธ๋์ ์ ๋ ฅํ๋ค.
2-3) vi Podfile ๋ก ํธ์ง๊ธฐ ์ด๊ณ
2-4) ์๋์ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ค.
2-5) pod install ์ ๋ ฅํ๋ค.
** ๋ง์ฝ ์ค์น์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๋ฉด ์ฝ์ฝ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ์ด๋ฏ๋ก pod repo update ํตํด์ ํด๊ฒฐํ ์๋ ์๋ค.
2-6) ์ค์น ๊ณผ์ ์ด ๋๋๋ฉด *.xcworkspace ํ์ผ๊ณผ ํจ๊ป Pods ํด๋ ๊ทธ๋ฆฌ๊ณ Podfile ๊ด๋ จ ํ์ผ๋ค์ด ์ถ๊ฐ๋์ด์๋ค.
3. *.xcworkspace ์ด์ด์ ์์ ํ๋ค.
์ฃผ์ํ ์ : ์ฝ์ฝ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ ๊ฒฝ์ฐ Xcode์ ์คํ ํ์ผ์ด ๋ณ๊ฒฝ๋๋ค. *.xcodeproj ๋์ ์ *.xcworkspace ํ์ผ์ ์ฌ์ฉํด์ผ ํ๋ค. ๊ธฐ์กด์ xcodeproj ํ์ผ์ ์ฌ์ฉํด์ ๋น๋์ ์ปดํ์ผ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
์ ๊ทธ๋ผ ๊ธฐ๋ณธ ์ฝ๋์ ๋ํด์ ์์๋ณด์.
Request
import Alamofire // import ๋จผ์ ํ๊ธฐ
Alamofire.request("ํธ์ถ URL") // HTTP์ ๊ธฐ๋ณธ๊ฐ์ GET ๋ฐฉ์
Alamofire.request("ํธ์ถ URL", method: .post) // POST ๋ฐฉ์์ผ๋ก ์ ์กํ๊ณ ์ถ๋ค๋ฉด ์ธ์๊ฐ ์ถ๊ฐ
/*
์ ๋ฌํด์ผ ํ ๊ฐ์ด ์์ ๊ฒฝ์ฐ์๋ ์ธ ๋ฒ์งธ ๋งค๊ฐ๋ณ์์ธ parameters๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
์ด ๋ณ์๋ ํค-๊ฐ ํ์์ ํ์
์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ค.
*/
let param : Parameters = [
"userId" : "lgvv",
"name" : "์ด๊ฑด์ฐ"
]
/*
์ ๋ฌํ๋ ๊ฐ์ ํน์๋ฌธ์๋ ํ๊ธ ๋ฑ์ด ํฌํจ๋์ด ์์ ๊ฒฝ์ฐ
์๋ฒ์์ ์๋ชป ๋ฐ์๋ค์ด์ง ์๋๋ก ์ธ์ฝ๋ฉ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ๋๋ฐ,
์ด๋ request ๋ฉ์๋์ ๋ค ๋ฒ์งธ ๋งค๊ฐ๋ณ์ encoding์ด ์ฌ์ฉ๋๋ค.
*/
Alamofire.request("ํธ์ถ URL", method: .post, parameters : param, encoding : URLEncodeing.httpbody)
/*
๋งค๊ฐ๋ณ์ encoding์ ํ๋กํ ์ฝ์ธ ParameterEncoding ํ์
์ผ๋ก,
์ด ํ๋กํ ์ฝ์ ๊ตฌํํ ์ด๊ฑฐํ์ด๋ ๊ตฌ์กฐ์ฒด ๋๋ ํด๋์ค ๊ฐ์ฒด๋ฅผ ์ธ์๊ฐ์ผ๋ก ์
๋ ฅ๋ฐ์ ์ ์๋ค.
๋ํ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด URLEncoding ๊ตฌ์กฐ์ฒด๋ก, ์ด ๊ตฌ์กฐ์ฒด์๋ ๋ค์๊ณผ ๊ฐ์ ์ธ๊ฐ์ง ์ธ์ฝ๋ฉ ํ์
์
์ ์ ๋ณ์๋ก ์ ์ธ๋์ด ์๋ค.
.methodDependent : ๋ฉ์๋์ ๋ฐ๋ผ ์ธ์ฝ๋ฉ ํ์
์ด ์๋์ผ๋ก ๊ฒฐ์ ๋จ.
๊ฐ๋ น GET๋ฐฉ์์ด๋ฉด .queryString
POST ๋ฐฉ์์ด๋ฉด .httpbody๊ฐ ์ ์ฉ๋๋ค.
.queryString : GET ์ ์ก์์ ์ฌ์ฉ๋๋ ์ฟผ๋ฆฌ ์คํธ๋ง ๋ฐฉ์์ผ๋ก ์ธ์ฝ๋ฉํ๋ค.
.httpbody : POST ์ ์ก์์ ์ฌ์ฉ๋๋ HTTP body ๋ฐฉ์์ผ๋ก ์ธ์ฝ๋ฉํ๋ค.
๋ง์ฝ .httpbody ํ์
์ ์ ์ฉํ๋ฉด Content-Type ํค๋์๋ ์๋์ผ๋ก
'application/x-www-form-urlencoded;charset=utf-8' ์ด ์ ์ฉ๋๋ค
*/
JSON ๋ฐฉ์์ผ๋ก ๊ฐ์ ์ ์กํ ๋์๋ ์ธ์ฝ๋ฉ ํ์
์ผ๋ก URLEncoding ๋์ JSONEncoding์ ์ฌ์ฉํด์ผ ํ๋ค.
(์์๊ตฌ๋ฌธ)
let param : Parameters = [
"userId" : "lgvv",
"name" : "์ด๊ฑด์ฐ"
]
Alamofire.request("ํธ์ถ URL", method: .post, parameters : param, encoding : JSONEncoding.default)
//Content-Type ํค๋์ 'application/json' ๊ฐ์ด ์๋์ผ๋ก ์ค์ ๋๋ค.
//Content-Length ํค๋ ์ญ์ ํ๋ผ๋ฏธํฐ ์ธ์๊ฐ๊ณผ ์ธ์ฝ๋ฉ ์ค์ ์ ์ฐธ๊ณ ํ์ฌ Alamofire ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋์ผ๋ก ๊ณ์ฐํ๋ค.
//HTTP ๋ฉ์์ง์ ๋ณ๋์ ํค๋๋ฅผ ์ถ๊ฐํ๊ณ ์ถ์ ๊ฒฝ์ฐ headers ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
//์ด๊ฒ๋ ์ญ์ ๋์
๋๋ฆฌ ํ์์ ๋ฐ๋ฅธ๋ค.
(์์๊ตฌ๋ฌธ)
let headers: HTTPHeaders = [
"Authorization" : "Basic QWxhZGRpbjpvcGVuIHNc2FtZQ==",
"Accept" : "application/json"
]
Alamofire.request("ํธ์ถ URL", method: .post, parameters : param, encoding : JSONEncoding.default, headers : headers)
Response | Alamofire๋ ์๋ฒ์ ์๋ต ๋ฉ์์ง ์ฒ๋ฆฌ๋ฅผ ์ง์ํ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ ์๋ต ์ฒ๋ฆฌ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค. |
response() | ์๋ต ๋ฉ์์ง์ ํน๋ณํ ์ฒ๋ฆฌ๋ฅผ ํ์ง ์์. ๊ธฐ๋ณธ ํํ์ด์ง๋ง URLSession ๊ฐ์ฒด๋ฅผ ์ง์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋ณ๋ฐ ์ฐจ์ด๊ฐ ์์ผ๋ฏ๋ก ํน๋ณํ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด ์ฌ์ฉ๋์ง ์๋๋ค. |
responseString() | ์๋ต ๋ฉ์์ง ๋ณธ๋ฌธ์ ๋ฌธ์์ด๋ก ์ฒ๋ฆฌํ ํ ์ ๋ฌ |
responseJSON() | ์๋ต ๋ฉ์์ง ๋ณธ๋ฌธ์ JSON ๊ฐ์ฒด๋ก ๋ณํํ์ฌ ์ ๋ฌ |
responseData() | ์๋ต ๋ฉ์์ง ๋ณธ๋ฌธ์ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ก ๋ณํํ์ฌ ์ ๋ฌ |
Alamofire๋ ๋น๋๊ธฐ ๊ธฐ๋ฐ์ผ๋ก ๋คํธ์ํฌ ์๋ต์ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์๋ต ๋ฉ์์ง๋ฅผ response ๋ฉ์๋์ ๊ฒฐ๊ณผ๊ฐ์ผ๋ก ๋ฐํ๋ฐ์ ์ ์๋ค. ๊ทธ์ ๋ํ ๋์์ผ๋ก ์ฐ๋ฆฌ๋ ์๋ฒ๋ก๋ถํฐ ์๋ต์ด ๋์ฐฉํ์ ๋ ์คํํ ๋ก์ง์ ํด๋ก์ ๋ก ๋ฏธ๋ฆฌ ์์ฑํ์ฌ ์ ๋ฉ์๋์ ์ธ์๊ฐ์ผ๋ก ๋ฃ์ด ์ฃผ์ด์ผ ํ๋๋ฐ ์ผ์ข ์ ์ฝ๋ฐฑ ํจ์๋ค.
Alamofire๋ ์๋ฒ์์ ์๋ต์ด ๋์ฐฉํ๋ฉด ์ด๋ฅผ DataResponse ํ์ ์ ๊ฐ์ฒด๋ก ์ฒ๋ฆฌํ ๋ค์, ์ด๋ฅผ ํด๋ก์ ์ ๋งค๊ฐ๋ณ์์ ๋ด์ ํธ์ถํ๋ค. ์ฐ๋ฆฌ๋ ์ด ๊ฐ์ฒด๋ฅผ ํ์ฉํ์ฌ ์ํ๋ ๊ฐ์ ์ถ์ถํ ์ ์๋ค.
//Response ์์์ฝ๋
// GET ๋ฐฉ์
let url = "http://~~"
AF.request(url).responseString() { response in
// response์ ์๋๊ฑด api์ ์ธ๋ถ ๋ฌธ์๋ฅผ ํ์ธํด ๋ด์ผ ํ๋ค.
print("\(reponse.result.isSuccess)")
print("\(reponse.result.value!)")
}
// POST ๋ฐฉ์
let url = "http://~~"
let param : Parameters = [
"userId" : "lgvv",
"name" : "gw"
]
let alamo = AF.request(url, method: .post, parameters : param, encoding : URLEncoding.httpBody)
alamo.responseJSON() { response in
// response์ ์๋๊ฑด api์ ์ธ๋ถ ๋ฌธ์๋ฅผ ํ์ธํด ๋ด์ผ ํ๋ค.
print("JSON = \(try! reponse.result.get())")
if let jsonObject = try! response.result.get() as? [String:Any] {
print("uesrId = \(jsonObject["uesrId"]!)")
print("name = \(jsonObject["name"]!)")
}
// ์คํ๊ฒฐ๊ณผ
JSON = {
name = "\Uc7ac\Uc740\Uc528";
result = SUCCESS;
timestamp = "2020-04-23 12:41:22";
userId = lgvv;
}
userId = lgvv
name = gw
/*
echo API๋ฅผ ํธ์ถํ์ฌ ์ป์ ๊ฒฐ๊ณผ
*/
'โ ๏ธ deprecated โ ๏ธ > ๊ผผ๊ผผํ ์ฌ์์จ(์ค์ )' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS14] ํค ์ฒด์ธ(key Chain) (0) | 2021.04.23 |
---|---|
[iOS14] Unwind ์ธ๊ทธ์จ์ด๋ฅผ ์ด์ฉํ์ฌ ํ๋ฉด ์ด๋ํ๊ธฐ (0) | 2021.04.23 |
[iOS14] ATS์ ๊ด๋ จํ์ฌ (0) | 2021.04.23 |
JSON ํ์ต์ ๋ฆฌ (0) | 2021.04.23 |
์๋ฒ์ฐ๋(RESTful API,HTTP,HTTPS) ์ด๋ก (0) | 2021.04.22 |