관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] 3. 서버 - Alamofire (RESTful API) 본문

iOS 실전 (swift)/서버

[iOS - swift] 3. 서버 - Alamofire (RESTful API)

jake-kim 2020. 4. 24. 19:06

* 파운데이션 프레임워크에서는 API호출하기 위해 URLRequest객체를 만들어서 사용했지만, Alamoifire는 더욱 간편하게 접근 할 수 있도록 함

 

* 실습에 앞서 프로젝트에 ATS설정하기

ATS설정

 

[iOS - swift] 2. 서버 - RESTful API 실습 (Foundation framework사용)

* 통신은 주로 Alamofire프레임워크를 사용하지만, 기본기를 위해서 Foundation 프레임워크로 구현 해보기 1. ATS설정과 API문서 1) HTTP통신인 경우 ATS(App Transport Security)설정 - 허용되는 사이트를 설정..

ios-development.tistory.com

1. Alamofire

- HTTP네트워크 통신을 위한 스위프트 기반으로 개발된 비동기 라이브러리

 

Alamofire설치하기

 

[iOS - swift] CocoaPods 패키지 관리 도구

1. CocoaPods 이란? - "코코아 프로젝트"에 대한 의존성 패키지를 관리 도구 Cocoa : 코코아 개발 환경 pod : 라이브러리를 의미 -> CocoaPods : 코코아 개발 환경에서의 라이브러리들 *CocoaPods이 없다면? githu..

ios-development.tistory.com

2. Alamofire를 이용한 요청과 응답

 1) 요청(request) : Alamofire.request(...)

 - Parameters 자료형은 Alamofire프레임워크 속 자료형 [String : Any]

 - 안에 들어갈 Key값은 서버에서 제공하는 API문서를 보고 확인

 - 단, 12번라인에서 요청을 하는 동시에 req에 응답이 들어옴

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// import Alamofire
let param: Parameters = [
    "userId" : "imustang",
    "name" : "iOS개발 블로거"
]
 
let headers: HTTPHeaders = [
    "Authorization" : "123",
    "Accept" : "application/json"
]
 
let req = Alamofire.request("호출할 URL",
                              method: .post,
                              parameters: param,
                              encoding: JSONEncoding.default,
                              headers: headers)
 

* 파라미터 

 - method : 생략할 시 GET방식

 - parameters : 항상 딕셔너리형태

 - encoding : .methodDependent (메소드에 따라 인코딩 타입이 자동으로 결정)

                     .JSONEncoding.default (JSON파일)

                     .queryString (GET 전송에서 사용되는 방식)

                     .httpBody (POST 전송에서 사용되는 방식)

 - headers : 딕셔너리형태

 

2) 응답(response)

- 응답되는 형식은 API문서를 보고 확인

1
2
3
4
5
6
7
8
9
req.responseJSON() {res in
    print(response.result.value!)
    
    guard let jsonObj = res.result.value as? [String: Any] else {return}
 
    let v1 = jsonObj["userId"]!
    let v2 = jsonObj["name"]!
}
 
 
 

 - 1번째 줄에, 응답으로 받을 자료형을 구분해줄 수 있음

 responseString()

 responseJSON()

 responseData() // 응답 메시지의 본문을 바이너리 데이터로 반환하여 전달

* Full Source Code

Comments