티스토리 뷰
오늘은 네트워크통신을 쉽게 도와주는 라이브러리 중 'alamofire'를 공부해보려고 합니다.
들어가기전에
`나는 CocoaPods 사용법을 모른다`
하시는분은 여기 링크에서 설치방법을 읽고와주세요
Alamofire란?
Apple에서 네트워킹 작업을 가능하게 해주는 URLSession을 기반으로 만들어진 라이브러리 이며,
더 간결하고 쉬운방법으로 통신할 수 있게 해줍니다.
설치 (CocoaPods)
Podfile에 아래 내용을 추가 후 pod install을 해주세요. (22년 2월 13일 기준. 최신 버전 5.5)
pod 'Alamofire', '~> 5.5'
통신 방법 (GET)
먼저 GET에 대해 알아봅시다.
형태는 이렇게 생겼어요.
1. url: 데이터를 요청할 URL
2. method: 메소드형식 (GET, POST, PUT, PATCH, DELETE...등)
3. parameters: 요청 시 담아서 보낼 파라미터
4. encoding: 파라미터를 담아보낼때 encoding 시킴 (기본값은 URLEncoding.default)
5. headers: [String: String] 타입으로 보낼 수 있음.
(예시 - ["Content-Type":"application/json", "Accept":"application/json"])
그럼 직접 호출까지 해보겠습니다.
// GET 버튼이 눌렸을대 textView에 데이터를 보여줌
@objc func getData() {
print("get버튼 터치")
let url = "https://jsonplaceholder.typicode.com/todos/1"
AF.request(url,
method: .get,
parameters: nil,
encoding: URLEncoding.default,
headers: ["Content-Type":"application/json", "Accept":"application/json"])
.validate(statusCode: 200..<300)
.responseJSON { (json) in
self.getDataTextView.text = "\(json)"
}
}
데이터 불러오기 성공 !!
Response handling
JSON 데이터로 받아오는데 까진 성공했으니 이젠 응답값을 다룰줄 알아봐야겠죠.
.results
먼저 응답값 (response)에 .result를 보면 결과값을 받아오는데 성공하면 Any 타입의 데이터를 받아오며,
실패하게 될경우 AFError를 보여줍니다.
분기처리를 하기 위해 아래와 같이 나누어 줍니다.
.responseJSON { (response) in
switch response.result {
case .success(let result): // 데이터 결과값을 여기서 가공
print("성공적으로 받아온 데이터: \(result)")
case .failure(let err): // 실패했을시 에러처리
print("err:", err.localizedDescription)
}
}
.data
.responseJSON { (response) in
guard let data = response.data else {
// 데이터가 없을 경우 return
print("데이터가 없습니다.")
return }
print("data:", data)
}
저는 이걸 사용하는데요.
JSON으로 받아온 데이터를 간편하게 객체화 시켜주기 위해 Decode를 해야하는데,
Decode를 하기위해선 data 타입이 필요합니다.
오늘은 Alamofire 라이브러리의 GET 메소드만 활용해서 데이터를 받아와 봤는데요.
- 받아온 데이터를 가공하는 작업인 Decoding 부분과 객체화 시키는 부분
- POST 메소드를 활용해 서버쪽에 데이터를 보내는 작업
등등
추후 블로깅 해보겠습니다.
↓↓↓ 아래는 전체 코드 입니다.
이해하는데 도움이 됐어요
'iOS' 카테고리의 다른 글
[iOS] 로컬 푸시 알림 (Local push notification) (0) | 2022.02.19 |
---|---|
구조체(Struct)/ 클래스 (Class) (0) | 2022.02.16 |
[iOS] UITextField placeholder 위치 조정 (0) | 2022.02.11 |
[Swift] 열거형 (Enumerations) (0) | 2022.02.09 |
[iOS] CocoaPods 설치 및 실행 (0) | 2022.02.06 |
- Total
- Today
- Yesterday
- Swift init
- RTCCameraVideoCapturer
- 2023년 회고
- Swift joined
- Swift final
- Combine: Asynchronous Programming with Swift
- Swift joined()
- swift reduce
- 원티드 프리온보딩
- Swift 알고리즘
- RIBs tutorial
- ios
- Class
- swift protocol
- Swift 내림차순
- swift property
- Swift
- removeLast()
- Swift Leetcode
- Swift inout
- Swift RIBs
- Swift Error Handling
- Swift 프로퍼티
- swift 고차함수
- CS 네트워크
- Swift ModernRIBs
- swift (programmers)
- Swift 프로그래머스
- swift programmers
- iOS error
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |