꾸준히 안타치기
Alamofire 사용법 본문
Alamofire
- 파운데이션 프레임워크에서는 API호출하기 위해 URLRequest객체를 만들어서 사용했지만, Alamoifire는 더욱 간편하게 접근 할 수 있도록 함.
- Alamofire 는 비동기 기반으로 네트워크 응답을 처리하기 때문에, 응답 메시지를 reponse 메소드의 결과값으로 반환받을 수 없다. 서버에서 응답이 도착했을때 실행될 로직을 클로저로 미리작성해 , reponse 메소드에 넣어주어야 한다(콜백 함수).
- Alamofire 는 서버에서 응답이 도착하면 이를 DataResponse타입의 객체로 처리한다음, 이를 클로저의 매개변수에 담아 호출한다.
//현재 시간 GET호출
func callCurrentTime() {
AF.request("API URL. AF.request는 매개변수로 string을 받는다.").responseString() { response in
switch response.result {
case .success:
self.currentTime = try! response.result.get()
case .failure(let error):
print(error)
return
}
}
}
//POST 방식으로 Echo API 호출(httpbody 방식)
func post() {
// 1. 전송할 값 준비
let apiURL = "api url string"
let userId = self.userId
let userPassword = self.userPassword
let param: Parameters = [
"userId": userId,
"userPassword": userPassword]
AF.request(apiURL, method: .post, parameters: param,
encoding: URLEncoding.httpBody)
.responseJSON() {
response in
switch response.result {
case .success:
if let jsonObject = try! response.result.get() as? [String: Any] {
let result = jsonObject["result"] as? String
let timestamp = jsonObject["timestamp"] as? String
let userId = jsonObject["userId"] as? String
let userPassword = jsonObject["userPassword"] as? String
self.parsedResponse = "요청결과: \(result!)" + "\n"+ "응답시간: \(timestamp!)" + "\n"+ "요청방식: x-www-form-urlencoded" + "\n"+ "유저 ID : \(userId!)" + "\n"+ "유저 password: \(userPassword!)" + "\n"
}
case .failure(let error):
print(error)
return
}
}
}
- 파라미터
- method : 생략할 시 GET방식
- parameters : 항상 딕셔너리형태
- encoding : 대표적으로 사용되는 구조체는 URLEncoding구조체로, 이 구조체에는 세가지 인코딩 타입이 정적변수로 선언되어있다. JSON방식으로 전송할때는 인코딩 타입으로 JSONEncoding을 사용해야한다.
- headers : HTTP 메시지에 별도로 헤더를 추가하고 싶을 경우에는 header 매개변수를 사용한다. 딕셔너리형태
URLEncoding 타입3가지 | JSONEncoding |
.methodDependent (메소드에 따라 인코딩 타입이 자동으로 결정) | .JSONEncoding.default |
.queryString (GET 전송에서 사용되는 방식) | |
.httpBody (POST 전송에서 사용되는 방식) |
Response
responsString() - 응답메시지의 본문을 문자열로 처리한 후 전달합니다.
responsJSON() - 응답메시지의 본문을 JSON객체로 변환하여 전달합니다.
responsData()- 응답메시지의 본문을 바이너리 데이터로 변환하여 전달합니다.
response.result.value를 그대로 출력하면 Any타입으로 처리된 JSON객체의 본문이 그대로 출력되고, 이를[String: Any]타입의
딕셔너리 객체로 캐스팅하면 개별값을 추출할 수 있다.
ATS설정 필요
내부적으로 URLSession객체를 사용하기 때문에, HTTPS프로토콜을 지원하지 않는 실습용 API서버와 통신할때는 ATS설정이 필요하다. 모든 도메인에 대한 HTTP통신 허용. 특정 도메인만 선택적으로 통신을 허용하는 것
GitHub - Alamofire/Alamofire: Elegant HTTP Networking in Swift
Elegant HTTP Networking in Swift. Contribute to Alamofire/Alamofire development by creating an account on GitHub.
github.com
https://furang-note.tistory.com/33
[iOS] Alamofire로 API 호출하기 (+ CocoaPods 사용법)
나는 왠만하면 외부 라이브러리는 안 쓰고 개발하려는 편인데 딱 한가지 예외로 거의 필수적으로 사용하는게 있다. 그건 바로 Alamofire. API를 호출하지 않는 앱은 극히 드물기 때문에 내가 개발하
furang-note.tistory.com
codable사용예제
https://learn-hyeoni.tistory.com/45
Swift에서 JSON Parsing하기 - JSONSerialization vs Codable
Swift에서 JSON Parsing하기 - JSONSerialization vs Codable 해당 내용은 회사에서 전사 세미나를 준비한 내용입니다. 오류가 있거나 수정되어야 할 내용이 있다면 언제든지 알려주세요. 저는 현재 챗봇 빌더
learn-hyeoni.tistory.com
직접 파싱한것 예제
https://to-remember-for-100-years.tistory.com/132?category=965454
앱 개발 기록 5. Alamofire
Alamofire는 iOS의 REST API 통신을 지원해주는 라이브러리이다. 기본 Url 뒤에는 ?을 사용하여 기본인자 정보들을 적고, 기본인자사이에는 &을 붙여 구분지어준다. 그러나 제공하는 api마다 상세한 방
to-remember-for-100-years.tistory.com
https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#using-alamofire
GitHub - Alamofire/Alamofire: Elegant HTTP Networking in Swift
Elegant HTTP Networking in Swift. Contribute to Alamofire/Alamofire development by creating an account on GitHub.
github.com
https://jiseobkim.github.io/swift/2018/07/21/swift-Alamofire%EC%99%80-Codable.html
Swift - Alamofire와 Codable
나만의 공간
jiseobkim.github.io
Alamofire
https://duwjdtn11.tistory.com/557
[iOS] Alamofire 소개 및 데모 예제
Alamofire Alamofire 를 사용해보면서 공부한 내용을 정리한다. Alamofire 는 Swift 에서 HTTP 통신을 하기 위해 이용되는 대표적인 오픈소스 라이브러리다. Alamofire 가 제공하는 간략한 기능 소개는 아래와
duwjdtn11.tistory.com
codable
https://duwjdtn11.tistory.com/562
[iOS] Codable and JSON Encoder & Decoder
Codable 그리고 JSON Encoder & Decoder Codable typealias Codable = Decodable & Encodable 인코딩 : 정보의 형태 또는 형식을 다른 형태, 형식으로 변환하는 처리 방식 디코딩 : 인코딩의 반대 작업 Codable 은..
duwjdtn11.tistory.com
'iOS > 서버연동' 카테고리의 다른 글
ssh_exchange_identification: read: Connection reset by peer 에러 해결 (0) | 2022.07.21 |
---|---|
네트워크 연결 체크 NMNetworkMonitor (0) | 2022.05.24 |
RESTful API/ GET/ POST Contents - Type의 차이점 (0) | 2022.03.15 |
JSON / Codable - 부스트코스 예제 (0) | 2022.03.15 |
Alamofire 예제 (0) | 2022.01.05 |