URLSession보다 훨씬 간단하고 직관적import하여 사용 가능📱 iOS 앱
↕️
Alamofire (도우미 라이브러리)
↕️
🌐 서버 API (뉴스, 로그인, 정보 요청 등)
URLSession로 직접 하려면 URL, 요청 형식, 파라미터 인코딩, 에러 처리, 데이터 파싱 등 코드가 매우 길고 복잡해짐.💡 장점
- 코드 간단:
URLSession보다 훨씬 짧고 명확- JSON 자동 파싱: 서버 응답을 바로 구조체로 변환 가능
- 다양한 요청 지원: GET, POST, PUT, DELETE 모두 지원
- 파일 업로드/다운로드: 이미지 업로드도 쉽게 가능
- 보안 & 인증 지원: 토큰 인증, HTTPS도 문제없이 지원
// 1. 주소 설정
if let url = URL(string: "url주소") {
// 2. 데이터 요청
let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
// 3. 결과 확인
if let error = error {
print("에러 발생: \(error)")
return
}
guard let data = data else {
print("데이터가 없습니다.")
return
}
// 4. 받아온 데이터 형태 변환
if let data = String(data: data, encoding: .utf8) {
print("\(data)")
}
}
// 5. 실제 시작!
task.resume()
}
import <Alamofire
// 이 주소로 데이터 요청 후 응답 확인
AF.request("url주소").responseString { response in
switch response.result {
case .success(let data):
print("\(data)")
case .failure(let error):
print("에러 발생: \(error)")
}
}
import Alamofire
AF.request("url주소").response { response in
if let data = response.data {
print("서버에서 받은 데이터:", data)
}
}
AF.request() → 서버에 요청 보냄.response → 응답이 오면 실행됨struct User: Codable {
let name: String
let age: Int
}
AF.request("url주소")
.validate()
.responseDecodable(of: User.self) { response in
switch response.result {
case .success(let user):
print("사용자 이름: \(user.name)")
case .failure(let error):
print("에러 발생: \(error)")
}
}
.validate() → 응답 상태코드 체크 (200~299 아닐 경우 오류로 처리).responseDecodable(of:) → JSON을 자동으로 Swift 객체로 변환해줌| 항목 | .responseDecodable | .serializingDecodable |
|---|---|---|
| 방식 | 클로저 기반 (completion handler) | async/await 기반 (비동기 함수) |
| 리턴 | Void → 응답은 클로저 내부에서 처리 | DataResponse<T, AFError> 또는 .value로 결과 |
| 사용 가능 버전 | Alamofire 5+ | Alamofire 5.6+ 이상 (Swift 5.5+ 필요) |
| 비동기 방식 | ❌ 콜백 기반 | ✅ async/await 지원 |
| 코드 간결성 | 중첩됨 | 깔끔하고 Swift스럽게 작성 가능 |
let parameters: [String: Any] = [
"email": "test@example.com",
"password": "1234"
]
AF.request("url주소",
method: .post,
parameters: parameters,
encoding: JSONEncoding.default)
.responseJSON { response in
print("로그인 결과:", response)
}
let headers: HTTPHeaders = [
"Authorization": "Bearer abcdef123456"
]
AF.request("url주소", headers: headers)
.responseJSON { response in
print("내 프로필:", response)
}
💡 Alamofire는 복잡하고 번거로운 서버 통신(네트워킹)을 매우 간단하고, 안전하며, 읽기 쉬운 코드로 만들어주는 개발자들의 필수 도구❗️