본문 바로가기
IOS_TechStack/Networking

[iOS][Swift][Moya] http통신을 쉽게하는 방법이 Moya?

by Joahnee 2022. 4. 22.

안녕하세요 :)

조안이 입니다.

오늘은 Moya 라이브러리를 사용하는 방법을 같이 공부해보려고 합니다.

이해한 내용을 바탕으로 적는것이니 잘못된 부분이 있다면 댓글달아주세요

😁  Moya가 무엇일까요?

http통신을 더욱 편하게 해주는 라이브러리로서,

네트워킹 서비스와 네트워킹 요청을 타입안전(type-safe)하게 구성하고 생성하는데 초점이 맞추어진 네트워킹 라이브러리입니다.

 

🤩 Moya를 왜 사용할까요?

기본적으로 iOS에서는 URLSession을 통해서 네트워킹을 진행합니다.

외부 라이브러리를 사용하지 않아도 된다! 라는 장점이 있습니다.

하지만, 우리는 편리함과 깨끗한 코드를 포기할 수 없습니다.

그래서 URLSession을 추상화해서 네트워킹 작업을 단순하게 해주는 Alamofire라는 라이브러리를 많이 사용합니다.

그런데, 이 Alamofire를 한번 더 추상화한 라이브러리가 바로 Moya입니다.

 


아래 그림은 MoyaGithub에서 가져온것으로,

Alamofire를 사용하면 URL을 사용할 때 계속 Request에 넣어주어야하기 때문에 네트워크계층에 계속 접근하게 되고 재사용에 별로 좋지 않습니다.

 

Moya에서는 네트워크계층을 템플릿화 시켜서 재사용성을 높이고, 자체적으로 네트워킹을 수행하지않고 Alamofire를 통해서 수행하게 됩니다.

이렇게 되면 App에서는 Request와 Response만 처리해주면 됩니다.

 

 

기존 방식이 안좋은이유:

  • 새로운 앱을 작성하기 어렵게 만듭니다.(코드짜기가 불편하다는 말 같습니다)
  • 기존앱의 유지보수가 어렵습니다.
  • 단위테스트를 작성하기 어렵습니다.

Moya의 특징(장점)!

  • 컴파일에 API endPoint 접근을 정확이 체크할 수 있습니다.
  • enum 값과 연관된 다른 endpoints의 명확한 사용을 정의 할 수 있습니다.
  • 단위 테스트가 매우 쉽습니다.

여기까지 Moya에 대해 알아봤습니다

다음시간에는 Moya를 통해 Get으로 통신하는 방법을 배워보겠습니다!

 

용어정리

타입 안전(type-safe)?

스위프트는 Type Safety Language 라고합니다.

String 타입 변수에는 String 타입만 저장 가능하다는 것입니다.


추상화?

객체지향 프로그래밍의 특징 중 하나로,

객체들의 공통적인 부분을 뽑아내서 따로 구현한것입니다.

중복되는 코드를 추상화해서 재사용성이 편리해집니다.

endPoint?

 

쉽게 설명하자면 같은 사이트에서 다른정보를 불러올 때 변경하는 부분이 endPoint입니다.
ex) www.영화.com/1번영화
www.영화.com/2번영화

 

댓글