<aside>
</aside>
์๋ ํ์ธ์! ์ด๋๋ง FastAPI ๊ฐ์ 5๋ฒ์งธ ์๊ฐ์ด๋ค์! ๐ฅณ ๋ค๋ค ์ฌ๋ฏธ์๊ฒ ๋ฐ๋ผ์ค๊ณ ๊ณ์ ๊ฐ์?
์ง๋ 4๊ฐ์์๋ URL์ ๊ฒฝ๋ก์ ์ฟผ๋ฆฌ ๋ฌธ์์ด์ ํตํด ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ๊ฐ๋จํ ๋ฐ์ดํฐ (ID, ๊ฒ์์ด, ํ์ด์ง ๋ฒํธ ๋ฑ)๋ฅผ ์ ๋ ฅ๋ฐ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ์ต๋๋ค. ๋ฐ๋ก ๊ฒฝ๋ก ๋งค๊ฐ๋ณ์์ ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์์์ฃ !
ํ์ง๋ง ์ํ ์ ๋ณด ์ ์ฒด, ์ฌ์ฉ์ ํ๋กํ ์ ์ฒด์ฒ๋ผ ๋ณต์กํ๊ณ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ณด๋ด์ผ ํ ๋๋ ์ด๋ป๊ฒ ํด์ผ ํ ๊น์? URL์ ๋ชจ๋ ์ ๋ณด๋ฅผ ๋ด๊ธฐ์๋ ๋๋ฌด ๊ธธ๊ณ ๋ณต์กํด์ง๊ฒ ์ฃ ? ๐ค
์ด๋ฒ ์๊ฐ์๋ ๋ฐ๋ก ์ด ๋ณต์กํ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ณ ํจ์จ์ ์ผ๋ก ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ๋ฒ, ์ฆ **์์ฒญ ๋ณธ๋ฌธ(Request Body)**์ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์๋๋ค. ๊ทธ๋ฆฌ๊ณ FastAPI์ ๊ฐ๋ ฅํ ํํธ๋, Pydantic ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ์ด ์์ฒญ ๋ณธ๋ฌธ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๊ณ , ์๋์ผ๋ก ์ ํจ์ฑ์ ๊ฒ์ฌํ๋ ๋๋ผ์ด ๊ฒฝํ์ ํ๊ฒ ๋ ๊ฑฐ์์! โจ
๋ฐ์ดํฐ๋ฅผ ๋์ฑ ์ค๋งํธํ๊ฒ ๋ค๋ฃจ๋ ์ธ๊ณ๋ก ํจ๊ป ๋ ๋๋ด ์๋ค!
์ด๋ฒ 5๊ฐ์์๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก ๋ณต์กํ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ ์ฌ์ฉํ๋ **์์ฒญ ๋ณธ๋ฌธ(Request Body)**์ FastAPI์์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋์ง ๋ฐฐ์๋๋ค. ์ฃผ๋ก POST, PUT, PATCH์ ๊ฐ์ HTTP ๋ฉ์๋์์ ์ฌ์ฉ๋๋ฉฐ, ๋ฐ์ดํฐ๋ ์ผ๋ฐ์ ์ผ๋ก JSON ํ์์ผ๋ก ์ ์ก๋ฉ๋๋ค.
FastAPI๋ ์ด ์์ฒญ ๋ณธ๋ฌธ ๋ฐ์ดํฐ๋ฅผ ๋งค์ฐ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด Pydantic ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํต์ฌ์ ์ผ๋ก ํ์ฉํฉ๋๋ค. Pydantic์ BaseModel
์ ์์ํ์ฌ ๋ฐ์ดํฐ์ **๊ตฌ์กฐ(Schema)**๋ฅผ ๋ฏธ๋ฆฌ ์ ์ํ๋ ๋ชจ๋ธ์ ๋ง๋ค๊ณ , ์ด ๋ชจ๋ธ์ ๊ฒฝ๋ก ์๋ ํจ์์ ์ธ์๋ก ์ ์ธํ๊ธฐ๋ง ํ๋ฉด,
FastAPI๊ฐ ๋ง๋ฒ์ฒ๋ผ ๋ค์ ์์ ๋ค์ ์๋์ผ๋ก ์ฒ๋ฆฌํด์ค๋๋ค:
์ด ๊ฐ์๋ฅผ ํตํด Pydantic ๋ชจ๋ธ์ ์ ์ํ๊ณ ์ด๋ฅผ ํ์ฉํ์ฌ ์์ฒญ ๋ณธ๋ฌธ ๋ฐ์ดํฐ๋ฅผ ์์ฝ๊ฒ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ตํ๊ณ , API ๊ฐ๋ฐ์ ์์ฐ์ฑ๊ณผ ์์ ์ฑ์ ํฌ๊ฒ ๋์ผ ์ ์์ต๋๋ค!
์ด ๊ฐ์๋ฅผ ๋ง์น๋ฉด ์ฌ๋ฌ๋ถ์ ๋ค์์ ํ ์ ์๊ฒ ๋ฉ๋๋ค:
BaseModel
์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ **์คํค๋ง(๊ตฌ์กฐ)**๋ฅผ ์ ์ํ๋ ๋ชจ๋ธ์ ๋ง๋ค ์ ์์ต๋๋ค.