์ƒ์„ธ ์ปจํ…์ธ 

๋ณธ๋ฌธ ์ œ๋ชฉ

[๋„คํŠธ์›Œํฌ] iOS ๋„คํŠธ์›Œํ‚น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ: AlamoFire, Moya, RxMoya ์™€ ์ง์ ‘ ๊ตฌํ˜„

๐ŸŽ iOS/Network

by AHN.Jihyeon 2024. 7. 30. 13:59

๋ณธ๋ฌธ

1. AlamoFire

AlamoFire๋Š” Swift๋กœ ์ž‘์„ฑ๋œ HTTP ๋„คํŠธ์›Œํ‚น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, RESTful API์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์‰ฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.

 

์ฃผ์š” ํŠน์ง•

  • HTTP ๋ฉ”์„œ๋“œ ์ง€์›: GET, POST, PUT, DELETE ๋“ฑ ์ฃผ์š” HTTP ๋ฉ”์„œ๋“œ๋ฅผ ์ง€์›
  • Request/Response ์ฒด์ธ: URLSession์˜ ๋ณต์žกํ•œ ์„ค์ •์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฒ˜๋ฆฌ
  • JSON ์ธ์ฝ”๋”ฉ/๋””์ฝ”๋”ฉ: JSON ๋ฐ์ดํ„ฐ์˜ ์ธ์ฝ”๋”ฉ๊ณผ ๋””์ฝ”๋”ฉ์„ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌ
  • ํŒŒ์ผ ์—…๋กœ๋“œ/๋‹ค์šด๋กœ๋“œ: ํŒŒ์ผ ์—…๋กœ๋“œ ๋ฐ ๋‹ค์šด๋กœ๋“œ ๊ธฐ๋Šฅ์„ ์ง€์›
  • ๋„คํŠธ์›Œํฌ ํ™œ๋™ ์ง€ํ‘œ: ๋„คํŠธ์›Œํฌ ํ™œ๋™ ์ธ๋””์ผ€์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌ
  • ์ธํ„ฐ์…‰ํ„ฐ: ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๊ฐ€๋กœ์ฑ„์„œ ์ถ”๊ฐ€์ ์ธ ๋กœ์ง์„ ์ ์šฉ

 

 

2. Moya

Moya๋Š” ๋„คํŠธ์›Œํ‚น์„ ์ถ”์ƒํ™”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, API ํ˜ธ์ถœ์„ ๊ตฌ์กฐํ™”ํ•˜๊ณ  ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค.

Moya๋Š” AlamoFire๋ฅผ ๋‚ด๋ถ€์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋„คํŠธ์›Œํ‚น ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 

์ฃผ์š” ํŠน์ง•

  • ํƒ€๊ฒŸ ๊ธฐ๋ฐ˜ API ์ •์˜: API ํ˜ธ์ถœ์„ enum์œผ๋กœ ์ •์˜ํ•˜์—ฌ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.
  • ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹œ์Šคํ…œ: ๋กœ๊น…, ์ธ์ฆ, ์บ์‹ฑ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ˜•ํƒœ๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ: ๋„คํŠธ์›Œํ‚น ๋ ˆ์ด์–ด๋ฅผ ๋ชจํ‚นํ•˜์—ฌ ์œ ๋‹› ํ…Œ์ŠคํŠธ๋ฅผ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

3. RxMoya

RxMoya๋Š” Moya์™€ RxSwift๋ฅผ ๊ฒฐํ•ฉํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ๋ฆฌ์•กํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋„คํŠธ์›Œํ‚น ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

๋น„๋™๊ธฐ ์ž‘์—…์„ ๋”์šฑ ์ง๊ด€์ ์ด๊ณ  ์„ ์–ธ์ ์œผ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ฃผ์š” ํŠน์ง•

  • ๋ฆฌ์•กํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ: ๋„คํŠธ์›Œํ‚น ์š”์ฒญ๊ณผ ์‘๋‹ต์„ Observable๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ ๋น„๋™๊ธฐ ์ž‘์—…์„ ๋‹จ์ˆœํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ŠคํŠธ๋ฆผ ๊ธฐ๋ฐ˜ ์ฒ˜๋ฆฌ: ๋„คํŠธ์›Œํฌ ์‘๋‹ต์„ ์ŠคํŠธ๋ฆผ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด, ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ์‰ฝ๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŽธ๋ฆฌํ•œ ์—ฐ์‚ฐ์ž: RxSwift์˜ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ์‘๋‹ต์„ ๊ฐ€๊ณตํ•˜๊ณ  ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 


โœ… Moya์™€ RxMoya์˜ ์ฐจ์ด์  

  • Moya: ๋น„๋™๊ธฐ ์ž‘์—…์„ ์ฝœ๋ฐฑ ํ˜•ํƒœ๋กœ ์ฒ˜๋ฆฌ.
  • RxMoya: ๋น„๋™๊ธฐ ์ž‘์—…์„ Observable๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ ๋ฆฌ์•กํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„ ์‚ฌ์šฉ.

 

 

โœ… Moya์™€ RxMoya์˜ ์žฅ๋‹จ์ 

Moya

์žฅ์ :

  • API ํ˜ธ์ถœ์„ enum์œผ๋กœ ์ •์˜ํ•˜์—ฌ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ž„.
  • ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ.
  • AlamoFire์˜ ๊ธฐ๋Šฅ์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.
  • ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ๊ตฌ์กฐํ™”ํ•˜์—ฌ ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•จ.

 

๋‹จ์ :

  • ์ฝœ๋ฐฑ ํ˜•ํƒœ์˜ ๋น„๋™๊ธฐ ์ž‘์—… ์ฒ˜๋ฆฌ๊ฐ€ ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์Œ.
  • ๋ฆฌ์•กํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ™œ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ฐ์ดํ„ฐ ํ๋ฆ„ ์ œ์–ด๊ฐ€ ๋ณต์žกํ•  ์ˆ˜ ์žˆ์Œ.

 

RxMoya

์žฅ์ :

  • ๋ฆฌ์•กํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ†ตํ•ด ๋น„๋™๊ธฐ ์ž‘์—…์„ Observable๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ž„.
  • RxSwift์˜ ๋‹ค์–‘ํ•œ ์—ฐ์‚ฐ์ž๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ์ง๊ด€์ ์œผ๋กœ ์ œ์–ด ๊ฐ€๋Šฅ.
  • ์ŠคํŠธ๋ฆผ ๊ธฐ๋ฐ˜ ์ฒ˜๋ฆฌ๋กœ ๋„คํŠธ์›Œํฌ ์‘๋‹ต์„ ์‰ฝ๊ฒŒ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Œ.
  • ์—๋Ÿฌ ํ•ธ๋“ค๋ง๊ณผ ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜์ด ์šฉ์ดํ•จ.

 

๋‹จ์ :

  • RxSwift๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋Ÿฌ๋‹ ์ปค๋ธŒ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Œ.
  • RxSwift์— ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋Š” ๋ณต์žกํ•˜๊ฒŒ ๋Š๊ปด์งˆ ์ˆ˜ ์žˆ์Œ.
  • RxSwift๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์— ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์—ฌ์•ผ ํ•จ.

 


โœ… AlamoFire์™€ Moya์˜ ์žฅ๋‹จ์ 

AlamoFire

์žฅ์ :

  • ๊ฐ„๋‹จํ•˜๊ณ  ์ง๊ด€์ ์ธ API ์ œ๊ณต์œผ๋กœ ์‚ฌ์šฉ์ด ์‰ฌ์›€.
  • HTTP ๋ฉ”์„œ๋“œ, ์ธ์ฝ”๋”ฉ/๋””์ฝ”๋”ฉ, ํŒŒ์ผ ์—…๋กœ๋“œ/๋‹ค์šด๋กœ๋“œ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ ์ง€์›.
  • ๋„คํŠธ์›Œํฌ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์†์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ.
  • ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ๋ฌธ์„œ๊ฐ€ ์ž˜ ์ •๋ฆฌ๋˜์–ด ์žˆ์Œ.

 

๋‹จ์ :

  • ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ๊ตฌ์กฐํ™”ํ•˜๋Š” ๋ฐ ํ•œ๊ณ„๊ฐ€ ์žˆ์Œ.
  • API ํ˜ธ์ถœ์˜ ๊ด€๋ฆฌ์™€ ํ™•์žฅ์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Œ.
  • ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ๋ชจํ‚น์ด ๋ฒˆ๊ฑฐ๋กœ์šธ ์ˆ˜ ์žˆ์Œ.

 

 

Moya

์žฅ์ :

  • API ํ˜ธ์ถœ์„ enum์œผ๋กœ ์ •์˜ํ•˜์—ฌ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ž„.
  • ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ๋กœ๊น…, ์ธ์ฆ, ์บ์‹ฑ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ.
  • AlamoFire์˜ ๊ธฐ๋Šฅ์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.
  • ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ๋ชจํ‚นํ•˜๊ธฐ ์šฉ์ดํ•จ.

 

๋‹จ์ :

  • ์ถ”๊ฐ€์ ์ธ ์ถ”์ƒํ™” ๋ ˆ์ด์–ด๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ AlamoFire๋ณด๋‹ค ์„ค์ •๊ณผ ์‚ฌ์šฉ์ด ๋ณต์žกํ•  ์ˆ˜ ์žˆ์Œ.
  • ์ฝœ๋ฐฑ ํ˜•ํƒœ์˜ ๋น„๋™๊ธฐ ์ž‘์—… ์ฒ˜๋ฆฌ๊ฐ€ ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์Œ.
  • ์‚ฌ์šฉ์ž๊ฐ€ Moya์˜ ํŒจํ„ด์— ์ต์ˆ™ํ•ด์ ธ์•ผ ํ•จ.

 


โœ…  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์™€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์„ ๋•Œ์˜ ์žฅ๋‹จ์ 

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ

์žฅ์ :

  • ์ฝ”๋“œ ๊ฐ€๋…์„ฑ ๋ฐ ์œ ์ง€๋ณด์ˆ˜์„ฑ: ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ๋” ์ฝ๊ธฐ ์‰ฝ๊ณ  ๊ตฌ์กฐํ™”๋˜์–ด ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•จ.
  • ๊ธฐ๋Šฅ ์ œ๊ณต: ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ๊ตฌํ˜„ํ•  ํ•„์š” ์—†์ด ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.
  • ์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์›: ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ๋ฌธ์„œ๊ฐ€ ์ž˜ ์ •๋ฆฌ๋˜์–ด ์žˆ์–ด ๋ฌธ์ œ ํ•ด๊ฒฐ์ด ์šฉ์ดํ•จ.
  • ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ: ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ๋ชจํ‚นํ•˜๊ฑฐ๋‚˜ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ํฌํ•จ๋˜์–ด ์žˆ์Œ.

 

๋‹จ์ :

  • ๋Ÿฌ๋‹ ์ปค๋ธŒ: ์ƒˆ๋กœ์šด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ•™์Šตํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ํ•„์š”ํ•จ.
  • ์ถ”์ƒํ™” ๋ ˆ์ด์–ด: ์ถ”๊ฐ€์ ์ธ ์ถ”์ƒํ™” ๋ ˆ์ด์–ด๊ฐ€ ์ƒ๊ฒจ์„œ ๋””๋ฒ„๊น…์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Œ.
  • ์˜์กด์„ฑ: ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์˜์กดํ•˜๊ฒŒ ๋˜์–ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์—…๋ฐ์ดํŠธ๋‚˜ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์˜ํ–ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ.

 

 

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฏธ์‚ฌ์šฉ (์ง์ ‘ ๊ตฌํ˜„)

์žฅ์ :

  • ์ตœ์ ํ™”: ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์–ด ์ฝ”๋“œ๊ฐ€ ๋” ์ตœ์ ํ™”๋  ์ˆ˜ ์žˆ์Œ.
  • ์œ ์—ฐ์„ฑ: ๋ชจ๋“  ๊ฒƒ์„ ์ง์ ‘ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ•„์š”ํ•œ ๋Œ€๋กœ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ๊ฐ€๋Šฅ.
  • ์˜์กด์„ฑ ์ œ๊ฑฐ: ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์˜์กดํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์™ธ๋ถ€ ์—…๋ฐ์ดํŠธ๋‚˜ ๋ฒ„๊ทธ์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Œ.

 

๋‹จ์ :

  • ๊ฐœ๋ฐœ ์‹œ๊ฐ„: ๋„คํŠธ์›Œํ‚น๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ง์ ‘ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๊ฐœ๋ฐœ ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•จ.
  • ๋ฒ„๊ทธ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ: ๊ฒ€์ฆ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ง์ ‘ ๊ตฌํ˜„ํ•œ ์ฝ”๋“œ์—์„œ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Œ.
  • ํ…Œ์ŠคํŠธ ์–ด๋ ค์›€: ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ๋ชจํ‚นํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•˜๊ธฐ๊ฐ€ ๋” ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Œ.
  • ์œ ์ง€๋ณด์ˆ˜ ์–ด๋ ค์›€: ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด์„œ ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์ง€๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์›Œ์งˆ ์ˆ˜ ์žˆ์Œ.

 

 

๊ด€๋ จ๊ธ€ ๋”๋ณด๊ธฐ