๐๋ค๋ก๊ฐ๊ธฐ
์ค์จ๊ฑฐ(Swagger)๋?
Swagger๋ API๋ฅผ ์ค๊ณ, ๋น๋, ๋ฌธ์ํ, ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉํ๊ธฐ ์ํ ๊ฐ๋ ฅํ ์คํ์์ค ํ๋ ์์ํฌ์ด๋ค. Swagger๋ ์น ์๋น์ค์ ๊ฐ์ RESTful API๋ฅผ ์ค๊ณํ๊ณ , ํ๋กํ ํ์
์ ๋ง๋ค๊ณ , ๋ฌธ์ํํ๊ณ , ํ
์คํธํ๋๋ก ๋์์ค๋ค.
Swagger๋ ํ๋ก์ ํธ์ API๋ฅผ ์๊ฐ์ ์ผ๋ก ํํํ๊ณ , API๊ฐ ์ด๋ป๊ฒ ๋์ํ๋์ง, ์ด๋ค ๊ฐ๋ค์ ๊ฐ์ง๊ณ ์๋์ง, ์ด๋ค ์ ์ฝ ์ฌํญ๋ค์ด ์๋์ง ๋ฑ์ ์ฝ๊ฒ ์ดํดํ ์ ์๊ฒ ํด์ค๋ค. ์ด๋ ๊ฐ๋ฐ์๊ฐ API์ ๋ํ ์ฌ์ธต์ ์ธ ์ดํด ์์ด๋ API์ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ํ์
ํ๊ณ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ค.
Swagger์ ๋ ๊ฐ์ง ์์
- Swagger Editor: ์ด๋ ์น ๊ธฐ๋ฐ ์๋ํฐ๋ก, ์ฌ์ฉ์๊ฐ Swagger๋ฅผ ์ด์ฉํด API๋ฅผ ์ ์ํ๊ณ , ๊ทธ ์ ์์ ๋ฐ๋ผ API๋ฅผ ๋์์ธํ๊ณ , ๊ทธ๋ฆฌ๊ณ API์ ๋ํ ๋ฌธ์๋ฅผ ์์ฑํ๊ณ , API๋ฅผ ํ
์คํธํ๊ฒ ํด์ฃผ๋ ๋๊ตฌ์ด๋ค.
- Swagger UI: ์ด๋ ์ฌ์ฉ์๊ฐ Swagger๋ฅผ ์ด์ฉํด ์์ฑํ API ๋ฌธ์๋ฅผ ์น ํ์ด์ง ํํ๋ก ๋ณด์ฌ์ฃผ๊ณ , ๋ธ๋ผ์ฐ์ ์์ API๋ฅผ ์ง์ ํธ์ถํด๋ณด๊ณ ํ
์คํธํ ์ ์๊ฒ ํด์ฃผ๋ ๋๊ตฌ์ด๋ค.
์ Swagger๊ฐ ํ์ํ๊ฐ?
- ๋ฌธ์ํ
- Swagger๋ฅผ ์ฌ์ฉํ๋ฉด, API๋ฅผ ์ ์ํ๊ณ ๊ตฌํํ๋ ๊ณผ์ ์์ ์๋์ ์ผ๋ก ๋ฌธ์๊ฐ ์์ฑ๋จ.
- API์ ๋์ ๋ฐฉ์, ์์ฒญ ๋ฐ ์๋ต ํ์ ๋ฑ์ ๋ํ ๋ฌธ์ํ๋ฅผ ์ฝ๊ฒ ํ ์ ์์.
- ์ด ๋ฌธ์๋ ์ค์๊ฐ์ผ๋ก ์
๋ฐ์ดํธ๋๋ฉฐ, ํด๋ผ์ด์ธํธ ๊ฐ๋ฐ์์ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์ฌ์ด์ ํ์
์ ์ฉ์ดํ๊ฒ ํจ.
- API ๋์์ธ ๋ฐ ํ
์คํธ
- Swagger Editor๋ฅผ ํตํด API๋ฅผ ์๊ฐ์ ์ผ๋ก ๋์์ธํ๊ณ , API์ ๋์์ ํ
์คํธํ ์ ์์.
- ์ด๋ฅผ ํตํด API์ ํ๋กํ ํ์
์ ๋น ๋ฅด๊ฒ ๋ง๋ค๊ณ ๋ฐ๋ณต์ ์ผ๋ก ํ
์คํธํ๋ฉด์ API๋ฅผ ๊ฐ์ ํ ์ ์์.
- ์์ฐ์ฑ ํฅ์
- Swagger UI๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ์น ๋ธ๋ผ์ฐ์ ์์ API๋ฅผ ์ง์ ์คํํด๋ณผ ์ ์์.
- ๊ฐ๋ฐ์๋ API์ ๊ธฐ๋ฅ์ ๋น ๋ฅด๊ฒ ์ดํดํ๊ณ ๊ฐ๋ฐ ์์
์ ๋ค์ด๊ฐ ์ ์์.
- ์์์น ๋ชปํ ๋์์ด๋ ์ค๋ฅ๋ฅผ ๋น ๋ฅด๊ฒ ๋ฐ๊ฒฌํ๊ณ ์์ ํ ์ ์์.
- ์ด๋ ์ ๋ฐ์ ์ธ ๊ฐ๋ฐ ํ๋ก์ธ์ค์ ์์ฐ์ฑ์ ํฅ์์ํด.
- ํ์คํ
- Swagger๋ OpenAPI ๋ช
์ธ๋ฅผ ๋ฐ๋ฆ.
- API์ ์ค๊ณ์ ๋ฌธ์ํ์ ํ์ค์ ์ ๊ณตํจ.
- ์ด ํ์คํ๋ API์ ๊ตฌ์กฐ์ ๋ฌธ์ํ ๋ฐฉ์์ ์ผ๊ด์ฑ์ ๋ถ์ฌํ๊ณ , ๋ค๋ฅธ ์์คํ
๊ณผ์ ํธํ์ฑ์ ํฅ์์ํด.
- ํธํ์ฑ
- Swagger์์ ์์ฑ๋ API ๋ฌธ์๋ JSON์ด๋ YAML ๋ฑ์ ํ์ค ๋ฐ์ดํฐ ํฌ๋งท์ ์ฌ์ฉํจ.
- ๋ฐ๋ผ์ ๋ค์ํ ํ๋ซํผ๊ณผ ์ธ์ด์์ ์ฝ๊ฒ ์ ์ฉํ ์ ์์.
- ์ด๋ API๋ฅผ ๋ค๋ฅธ ์์คํ
๊ณผ ํตํฉํ๋ ๋ฐ ๋์์ ์ค.
- ์ปค๋ฎค๋ํฐ์ ์ง์
- Swagger๋ ๊ด๋ฒ์ํ ์ฌ์ฉ์ ์ปค๋ฎค๋ํฐ๋ฅผ ๊ฐ์ง๊ณ ์์.
- ๋ค์ํ ์ถ๊ฐ ๋๊ตฌ์ ํ๋ฌ๊ทธ์ธ์ด ์กด์ฌํ๋ฉฐ, ๊ณ์ ๊ฐ๋ฐ ์ค.
- ์ด๋ฅผ ํตํด API ๊ฐ๋ฐ์ ์์ด ๋ค์ํ ์ง์ ๊ฐ๋ฅ.