<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๊ฐ€ ๋งˆ๋ฒ•์ฒ˜๋Ÿผ ๋‹ค์Œ ์ž‘์—…๋“ค์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์ค๋‹ˆ๋‹ค:

  1. ์š”์ฒญ ๋ณธ๋ฌธ(JSON)์„ ์ฝ์–ด์˜ต๋‹ˆ๋‹ค.
  2. ์ •์˜๋œ Pydantic ๋ชจ๋ธ์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค. (ํƒ€์ž… ๊ฒ€์‚ฌ, ํ•„์ˆ˜ ํ•„๋“œ ํ™•์ธ ๋“ฑ)
  3. ์œ ํšจํ•œ ๋ฐ์ดํ„ฐ๋ฅผ Python ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ํ•จ์ˆ˜์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  4. ์œ ํšจํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ค๋ฉด, ์–ด๋–ค ๋ถ€๋ถ„์ด ์ž˜๋ชป๋˜์—ˆ๋Š”์ง€ ์ƒ์„ธํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ž๋™์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ฐ•์˜๋ฅผ ํ†ตํ•ด Pydantic ๋ชจ๋ธ์„ ์ •์˜ํ•˜๊ณ  ์ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์š”์ฒญ ๋ณธ๋ฌธ ๋ฐ์ดํ„ฐ๋ฅผ ์†์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ตํžˆ๊ณ , API ๊ฐœ๋ฐœ์˜ ์ƒ์‚ฐ์„ฑ๊ณผ ์•ˆ์ •์„ฑ์„ ํฌ๊ฒŒ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!


๐ŸŽฏ ์ฑ•ํ„ฐ ๋ชฉํ‘œ

์ด ๊ฐ•์˜๋ฅผ ๋งˆ์น˜๋ฉด ์—ฌ๋Ÿฌ๋ถ„์€ ๋‹ค์Œ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค:

  1. **์š”์ฒญ ๋ณธ๋ฌธ(Request Body)**์ด ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค HTTP ๋ฉ”์„œ๋“œ(POST, PUT, PATCH ๋“ฑ)์™€ ํ•จ๊ป˜ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š”์ง€ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.
  2. Pydantic์˜ BaseModel์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ **์Šคํ‚ค๋งˆ(๊ตฌ์กฐ)**๋ฅผ ์ •์˜ํ•˜๋Š” ๋ชจ๋ธ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.