반응형
Alamofire는 swift의 Foundation networking을 기반으로 한 http 네트워킹 라이브러리 입니다.
네트워크 작업을 단순화 시켜주어서 굉장히 쓰기 편리합니다.
굉장히 다양한 기능이 있는데요, 그중 GET/POST 방식으로 http통신을 해서
응답값을 받아오는것 까지 구현해보도록 하겠습니다.
Alamofire은 크게 다음과같이 두가지로 나뉩니다.
request
- url : 메시지를 보내고 응답을 요청할 인터넷 URL 주소
- method : .get (post사용시에는 아이에 다른 방법으로 사용합니다.)
- parameters : 요청시 같이 보낼 파라미터
- encoding : 사용할 encoding 방식 (URL, JSON, PropertyList 세가지 지원)
- hearder : [String: String] 형태로 헤더를 설정해줍니다.
- validate(statusCode: 200..<300) : 200~299범위의 HTTP Status Code를 가져오는데요,
200은 ok, 201은 create, 202는 accpted등 통신의 성공/실패를 알려주는 HTTP Status Code의 범위입니다.
HTTP Status Code가 궁금하시면 여기를 보셔서 참고하시면 되겠습니다.
response
- request
- response
- data
- error
더 많은 정보는 github.com/Alamofire/Alamofire 여기서 확인하시면 되겠습니다.
jsonplaceholder.typicode.com/todos/1 을 사용해서 값을 가져와 보겠습니다.
get 방식
func getTest() {
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
//응답처리
print(json)
}
}
func getTest2(){
let url = "https://jsonplaceholder.typicode.com/todos/1"
let alamo = AF.request(url, method: .get, parameters: nil).validate(statusCode: 200..<300)
alamo.responseJSON() { response in
switch response.result{
case .success(let value):
if let jsonObj = value as? [String: Any]{
print("데이터의 갯수: \(jsonObj.count)")
if let userId = jsonObj["userId"]{
print("userId = \(userId)")
}
if let id = jsonObj["id"]{
print("id = \(id)")
}
if let title = jsonObj["title"]{
print("title = \(title)")
}
if let completed = jsonObj["completed"]{
print("completed = \(completed)")
}
}
case .failure(let error):
print("error: \(String(describing: error.errorDescription))")
}
}
}
post 방식
https://ptsv2.com 을 이용해 post를 날려보겠습니다.
func postTest() {
//Toilet: g160j-1618823856
let url = "https://ptsv2.com/t/g160j-1618823856/post"
var request = URLRequest(url: URL(string: url)!)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.timeoutInterval = 10
// POST 로 보낼 정보
let params = ["id":"아이디", "pw":"패스워드"] as Dictionary
// httpBody 에 parameters 추가
do {
try request.httpBody = JSONSerialization.data(withJSONObject: params, options: [])
} catch {
print("http Body Error")
}
AF.request(request).responseString { (response) in
switch response.result {
case .success:
print("POST 성공")
case .failure(let error):
print("error : \(error.errorDescription!)")
}
}
}
data를 다운받는 기능까지가 대표적으로 사용하는 기능인데요,
데이터를 주고받을때 유용한 JSON 파싱은 다음기회에 포스팅해보도록 하겠습니다.
공부에 도움을 준 사이트들
www.zehye.kr/ios/2020/04/01/12iOS_alamofire/
aircook.tistory.com/entry/Alamofire-간단하게-사용하기
github.com/Alamofire/Alamofire
반응형
'IDE & Framework > iOS' 카테고리의 다른 글
ios Storyboard간 이동 (0) | 2021.04.21 |
---|---|
m1 기반 mac에서 cocoapod 사용하기 (0) | 2021.04.20 |
Storyboard 사용해보기 (0) | 2021.04.15 |
ios Stroyboard란? (0) | 2021.04.14 |
[기상알리미] application preview (0) | 2021.04.13 |