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์ ํจํด์ ์ต์ํด์ ธ์ผ ํจ.
โ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ ๋์ ์ฌ์ฉํ์ง ์์์ ๋์ ์ฅ๋จ์
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ
์ฅ์ :
- ์ฝ๋ ๊ฐ๋ ์ฑ ๋ฐ ์ ์ง๋ณด์์ฑ: ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋๊ฐ ๋ ์ฝ๊ธฐ ์ฝ๊ณ ๊ตฌ์กฐํ๋์ด ์ ์ง๋ณด์๊ฐ ์ฉ์ดํจ.
- ๊ธฐ๋ฅ ์ ๊ณต: ๋ค์ํ ๊ธฐ๋ฅ์ด ๋ด์ฅ๋์ด ์์ด ๊ฐ๋ฐ์๊ฐ ์ง์ ๊ตฌํํ ํ์ ์์ด ๋ฐ๋ก ์ฌ์ฉํ ์ ์์.
- ์ปค๋ฎค๋ํฐ ์ง์: ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ปค๋ฎค๋ํฐ์ ๋ฌธ์๊ฐ ์ ์ ๋ฆฌ๋์ด ์์ด ๋ฌธ์ ํด๊ฒฐ์ด ์ฉ์ดํจ.
- ํ ์คํธ ์ฉ์ด์ฑ: ๋คํธ์ํฌ ์์ฒญ์ ๋ชจํนํ๊ฑฐ๋ ํ ์คํธํ ์ ์๋ ๊ธฐ๋ฅ์ด ํฌํจ๋์ด ์์.
๋จ์ :
- ๋ฌ๋ ์ปค๋ธ: ์๋ก์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ตํ๋ ๋ฐ ์๊ฐ์ด ํ์ํจ.
- ์ถ์ํ ๋ ์ด์ด: ์ถ๊ฐ์ ์ธ ์ถ์ํ ๋ ์ด์ด๊ฐ ์๊ฒจ์ ๋๋ฒ๊น ์ด ์ด๋ ค์ธ ์ ์์.
- ์์กด์ฑ: ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์กดํ๊ฒ ๋์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ๋ฐ์ดํธ๋ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ๋ฉด ์ํฅ์ ๋ฐ์ ์ ์์.
๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฏธ์ฌ์ฉ (์ง์ ๊ตฌํ)
์ฅ์ :
- ์ต์ ํ: ํ์ํ ๊ธฐ๋ฅ๋ง ๊ตฌํํ ์ ์์ด ์ฝ๋๊ฐ ๋ ์ต์ ํ๋ ์ ์์.
- ์ ์ฐ์ฑ: ๋ชจ๋ ๊ฒ์ ์ง์ ์ ์ดํ ์ ์์ผ๋ฏ๋ก ํ์ํ ๋๋ก ์ปค์คํฐ๋ง์ด์ง ๊ฐ๋ฅ.
- ์์กด์ฑ ์ ๊ฑฐ: ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์กดํ์ง ์์ผ๋ฏ๋ก ์ธ๋ถ ์ ๋ฐ์ดํธ๋ ๋ฒ๊ทธ์ ์ํฅ์ ๋ฐ์ง ์์.
๋จ์ :
- ๊ฐ๋ฐ ์๊ฐ: ๋คํธ์ํน๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ง์ ๊ตฌํํด์ผ ํ๋ฏ๋ก ๊ฐ๋ฐ ์๊ฐ์ด ์ฆ๊ฐํจ.
- ๋ฒ๊ทธ ๋ฐ์ ๊ฐ๋ฅ์ฑ: ๊ฒ์ฆ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฏ๋ก ์ง์ ๊ตฌํํ ์ฝ๋์์ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋์.
- ํ ์คํธ ์ด๋ ค์: ๋คํธ์ํฌ ์์ฒญ์ ๋ชจํนํ๊ณ ํ ์คํธํ๊ธฐ๊ฐ ๋ ์ด๋ ค์ธ ์ ์์.
- ์ ์ง๋ณด์ ์ด๋ ค์: ์๊ฐ์ด ์ง๋๋ฉด์ ์ฝ๋๊ฐ ๋ณต์กํด์ง๊ณ ์ ์ง๋ณด์๊ฐ ์ด๋ ค์์ง ์ ์์.