logo
logo
모바일
Alamofire
iOS, macOS를 위한 스위프트 기반 HTTP 네트워킹 라이브러리로 Apple의 Foundation networking 기반으로 인터페이스를 제공하여 일반적인 네트워킹 작업을 단순화한다.
StackOverflow 질문 수: 6078
Github Stars : ★ 40996
사용 기업
패션
금융/보험
소셜/컨텐츠
헬스케어
이커머스
종합
푸드테크
모빌리티
여행
교육
직장
techstack-logo
딜리셔스
techstack-logo
에이블리
techstack-logo
핀다
techstack-logo
당근
techstack-logo
버드뷰
techstack-logo
채널코퍼레이션
techstack-logo
위메프
techstack-logo
차이코퍼레이션
techstack-logo
카카오엔터테인먼트
techstack-logo
무신사
techstack-logo
하이퍼커넥트
techstack-logo
카카오
techstack-logo
우아한형제들
techstack-logo
쏘카
techstack-logo
더스윙
techstack-logo
카카오페이
techstack-logo
미스터블루
techstack-logo
브랜디
더 보기
기술 블로그 글
우아한형제들
iOS Networking and Testing | 우아한형제들 기술블로그
Networking은 요즘 앱에서 거의 필수적인 요소입니다. 설치되어 있는 앱들 중에 네트워킹을 사용하지 않는 앱은 거의 없을 겁니다. API 추가가 쉽고 변경이 용이한 네트워킹 모듈을 개발하는것이 중요한 이유죠. Why Testing? 미드 <빅뱅이론> 보셨나요? 쉘든 쿠퍼 라는 주인공은 16살에 박사학위를 취득할 만큼 천재이면서 동시에 대단히 특이한 사람입니다. 주변에서 "Are you crazy?" 라는 말을 자주 듣습니다. 그때 마다 쉘든이 하는 말이 있죠. 쉘든은 자기가 미치지 않았다는 걸 어떻게 알았을까요? 엄마와 함께 병원에 가서 테스트를 했거든요. 우리의 코드가 틀리지 않았다는 걸 어떻게 알 수 있을까요? 우리의 코드는 테스트를 통과했으니까요. 가장 기본적인 방식부터 시작해 만화경 iOS App에서 사용하고 있는 네트워킹 방식에 대해서 공유해 볼까 합니다. 테스트에 중점을 두겠습니다. iOS에서 네트워킹은 기본적으로 URLSession 을 사용합니다. 프로젝트의 복잡도가 높아지면 조금 더 추상화 되고 간편한 방식이 필요하게 되죠. 이때 많이들 사용하는 라이브러리가 Alamofire 입니다. Alamofire 는 URLSession 위에 구현되었습니다. 그 기반은 여전히 URLSession 입니다. 개발하다 보면 boilderplate 코드가 거슬리게 되고 Alamofire 위에 또 다른 추상화에 대한 욕구를 느끼게 됩니다. Alamofire를 한번 더 추상화하여 구현된 라이브러리가 바로 Moya 입니다. Moya는 사용하기 쉽고 테스트하기 쉽습니다. URLSession 부터 시작해 간단한 구현과 테스트 방식을 설명하고 만화경에서 Moya를 어떻게 사용하는지 공유하려고 합니다. 테스트를 위해 사용할 API 는 http://www.icndb.com/api 입니다. Chuck Norris 스타일의 조크를 DB로 만든 서비스 입니다. 웃기기 때문에 지루하면 웃고 넘길 수 있지 않을까요? 처음 들어보시는 분은 구글링 해보세요 "척 노리스의 사실" 예를 들면 이런 스타일의 유머 입니다. "사실: 척 노리스는 독서를 하지 않는다. 그가 책을 째려보면 책들이 알아서 내용을 불게 된다." 그럼 지금부터 시작해 보겠습니다. An object that coordinates a group of related, network data-transfer tasks. URLSessionTask 는 서버에 데이터를 요청하는 하나의 Task를 표현합니다. URLSession 의 dataTask(with:) 메서드를 사용해 URLSessionTask 를 생성할 수 있습니다. http://api.icndb.com/jokes/random 으로 request에 대한 response는 다음과 같은 json 입니다. $ curl "http://api.icndb.com/jokes/random" | python3 -m json.tool ... { "type": "success", "value": { "id": 448, "joke": "When Chuck Norri
alamofire
Copyright © 2024. Codenary All Rights Reserved.