FastAPIÀÇ ÇÙ½É ±â´É°ú 5°¡Áö ±â¼ú ½ºÅÃ(¸ù°íDB, µµÄ¿, pydantic, SQLModel, pytest)À¸·Î
À̺¥Æ® Ç÷¡³Ê ¾ÖÇø®ÄÉÀ̼ÇÀ» óÀ½ºÎÅÍ ³¡±îÁö ¿Ï¼ºÇغ»´Ù!
ÀÌ Ã¥ÀÇ °Á¡Àº ¡®À̺¥Æ® Ç÷¡³Ê ¾ÖÇø®ÄÉÀÌ¼Ç ¿Ï¼º¡¯À̶ó´Â ¸ñÇ¥¸¦ °¡Áö°í ¶ó¿ìÆúÎÅÍ µ¥ÀÌÅͺ£À̽º ¿¬°á, ÀÎÁõ, Å×½ºÆ®, ¹èÆ÷±îÁö FastAPIÀÇ ÇÙ½É ±â´ÉÀ» ´Ü°èº°·Î Àû¿ëÇغ»´Ù´Â Á¡ÀÔ´Ï´Ù. ¶ÇÇÑ ½±°Ô ½Ç½ÀÀ» ÁøÇàÇÒ ¼ö ÀÖµµ·Ï À©µµ¿ì¿Í ¸®´ª½º ¸í·É¾î¸¦ °¢°¢ Á¦°øÇÕ´Ï´Ù.
½Ç½À ÄÚµå´Â °£°áÇÏ°í ¸íÈ®ÇÕ´Ï´Ù. Çöó½ºÅ©, Àå°í °°Àº À¥ ÇÁ·¹ÀÓ¿öÅ©º¸´Ù ¹è¿ì±â ½¬¿î FastAPIÀÇ ÀåÁ¡ÀÌ Àß ¹Ý¿µµÇ¾î Àֱ⠶§¹®ÀÌÁÒ. ¹Ý´ë·Î ÇÙ½É ±â´É°ú Äڵ忡 °üÇÑ ¼³¸íÀº FastAPI °ø½Ä ¹®¼º¸´Ù ²Ä²ÄÇÏ°í ÀÚ¼¼ÇÕ´Ï´Ù. µû¶ó¼ À¥ °³¹ß Ãʺ¸ÀÚµµ, ´Ù¸¥ ÇÁ·¹ÀÓ¿öÅ©·Î À¥ °³¹ßÀ» °æÇèÇغ» ±âÁ¸ °³¹ßÀÚµµ À¥ °³¹ß ½Ç·ÂÀ» ÇÑÃþ ´õ ³ôÀÏ ¼ö ÀÖ½À´Ï´Ù.
FastAPI¿¡ Àͼ÷ÇØÁø ÈÄ¿¡´Â ÀúÀÚ°¡ ºí·Î±×¿¡¼ Á¦°øÇÏ´Â ½Ç½À ÀÚ·á(Okteto¸¦ »ç¿ëÇÑ ¹æ¸í·Ï ¾ÖÇø®ÄÉÀÌ¼Ç ±¸Ãà°ú ¸ù°íDB, JWT ÀÎÁõ, ¸®¾×Æ®¸¦ È°¿ëÇÑ ¾ÖÇø®ÄÉÀÌ¼Ç ±¸Ãà ¿¹Á¦)¸¦ ÅëÇØ Ãß°¡ ÇнÀµµ ÁøÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.
¼÷·ÃµÈ ÆÄÀ̽㠰³¹ßÀÚÀÌÀÚ ¼ÒÇÁÆ®¿þ¾î ¹é¿£µå ¿£Áö´Ï¾î´Ù. ±â¼ú ÀúÀڷεµ È°µ¿Çϸç Æø³ÐÀº °æÇè°ú ±â¼úÀ» Áö´Ï°í ÀÖ´Ù. ¸í·ÉÁÙ ¾ÖÇø®ÄÉÀ̼ǻӸ¸ ¾Æ´Ï¶ó FastAPI¸¦ »ç¿ëÇÑ ¹é¿£µå ¾ÖÇø®ÄÉÀ̼Ç, ¾Ë°í¸®Áò ±â¹Ý º¸¹°Ã£±â µµ±¸ µîÀ» °³¹ßÇß´Ù. ¶ÇÇÑ ºí·Î±×¿¡¼ ÆÄÀ̽ãÀ» °¡¸£Ä¡°í ¼öÇÐ ¹®Á¦ Ǫ´Â °ÍÀ» Áñ±ä´Ù. 2022³â±îÁö´Â ¼öÀÚ¿ø ¹× ȯ°æ°øÇÐ ÇÁ·ÎÁ§Æ®¿¡ Âü¿©ÇßÀ¸¸ç Áö±ÝÀº Auth0, LogRocket, Okteto µîÀÇ ÃÊ´ë ±â¼ú ÀúÀÚ·Î È°µ¿ÇÏ°í ÀÖ´Ù.
PART 1 FastAPI ½ÃÀÛÇϱâ
CHAPTER 1 FastAPI ¼Ò°³
1.1 Git ±âÃÊ
_Git ¼³Ä¡
_Git ½ÇÇà
_Git ºê·£Ä¡
1.2 virtualenv¸¦ »ç¿ëÇÑ °³¹ß ȯ°æ ±¸Ãà
_°¡»ó ȯ°æ »ý¼º
_°¡»ó ȯ°æ È°¼ºÈ/ºñÈ°¼ºÈ
1.3 pipÀ» »ç¿ëÇÑ ÆÐÅ°Áö °ü¸®
_pip ¼³Ä¡
_±âº» ¸í·É
1.4 µµÄ¿ ¼³Á¤
_µµÄ¿ÆÄÀÏ
1.5 °£´ÜÇÑ FastAPI ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß
Á¤¸®Çϱâ
CHAPTER 2 ¶ó¿ìÆÃ
2.1 FastAPIÀÇ ¶ó¿ìÆÃ
_¶ó¿ìÆà ¿¹
2.2 APIRouter Ŭ·¡½º¸¦ »ç¿ëÇÑ ¶ó¿ìÆÃ
2.3 pydantic ¸ðµ¨À» »ç¿ëÇÑ ¿äû ¹Ùµð °ËÁõ
_Áßø ¸ðµ¨
2.4 °æ·Î ¸Å°³º¯¼ö¿Í Äõ¸® ¸Å°³º¯¼ö
_°æ·Î ¸Å°³º¯¼ö
_Äõ¸® ¸Å°³º¯¼ö
2.5 ¿äû ¹Ùµð
_FastAPI ÀÚµ¿ ¹®¼È
2.6 °£´ÜÇÑ CRUD ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß
Á¤¸®Çϱâ
CHAPTER 3 ÀÀ´ä ¸ðµ¨°ú ¿À·ù ó¸®
3.1 FastAPIÀÇ ÀÀ´ä
3.2 ÀÀ´ä ¸ðµ¨ ÀÛ¼º
3.3 ¿À·ù ó¸®
Á¤¸®Çϱâ
CHAPTER 4 ÅÛÇø´ÆÃ
4.1 Jinja
_ÇÊÅÍ
_if¹®
_¹Ýº¹¹®
_¸ÅÅ©·Î
_ÅÛÇø´ »ó¼Ó
4.2 FastAPI¿¡¼ Jinja¸¦ »ç¿ëÇÏ´Â ¹æ¹ý
Á¤¸®Çϱâ
PART 2 FastAPI ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ßÇϱâ
CHAPTER 5 ±¸Á¶È
5.1 FastAPI ¾ÖÇø®ÄÉÀÌ¼Ç ±¸Á¶È
_À̺¥Æ® Ç÷¡³Ê ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß
_¸ðµ¨ ±¸Çö
_¶ó¿ìÆ® ±¸Çö
Á¤¸®Çϱâ
CHAPTER 6 µ¥ÀÌÅͺ£À̽º ¿¬°á
½Ç½À ȯ°æ
6.1 SQLModel ¼³Á¤
_Å×À̺í
_·Î¿ì
_¼¼¼Ç
6.2 µ¥ÀÌÅͺ£À̽º »ý¼º
_À̺¥Æ® »ý¼º
_À̺¥Æ® Á¶È¸
_À̺¥Æ® º¯°æ
_À̺¥Æ® »èÁ¦
6.3 ¸ù°íDB ¼³Á¤
_¹®¼
_µ¥ÀÌÅͺ£À̽º ÃʱâÈ
6.4 CRUD ó¸®
_»ý¼º ó¸®
_Á¶È¸ ó¸®
_º¯°æ ó¸®
_»èÁ¦ ó¸®
_routes/events.py
_routes/users.py
Á¤¸®Çϱâ
CHAPTER 7 º¸¾È
7.1 FastAPIÀÇ ÀÎÁõ ¹æ½Ä
_ÀÇÁ¸¼º ÁÖÀÔ
_ÀÇÁ¸ ¶óÀ̺귯¸® »ý¼º
7.2 OAuth2¿Í JWT¸¦ »ç¿ëÇÑ ¾ÖÇø®ÄÉÀÌ¼Ç º¸¾È
_Æнº¿öµå ÇؽÌ
_¾×¼¼½º ÅäÅ« »ý¼º°ú °ËÁõ
_»ç¿ëÀÚ ÀÎÁõ
7.3 ¾ÖÇø®ÄÉÀÌ¼Ç º¯°æ
_·Î±×ÀÎ ¶ó¿ìÆ® º¯°æ
_À̺¥Æ® ¶ó¿ìÆ® º¯°æ
_À̺¥Æ® ¹®¼ Ŭ·¡½º¿Í ¶ó¿ìÆ® º¯°æ
7.4 CORS ¼³Á¤
Á¤¸®Çϱâ
PART 3 FastAPI ¾ÖÇø®ÄÉÀÌ¼Ç Å×½ºÆ® ¹× ¹èÆ÷Çϱâ
CHAPTER 8 Å×½ºÆ®
8.1 pytest¸¦ »ç¿ëÇÑ ´ÜÀ§ Å×½ºÆ®
_ÇȽºÃ³¸¦ »ç¿ëÇÑ ¹Ýº¹ Á¦°Å
8.2 Å×½ºÆ® ȯ°æ ±¸Ãà
8.3 REST API ¶ó¿ìÆ® Å×½ºÆ® ÀÛ¼º
_»ç¿ëÀÚ µî·Ï ¶ó¿ìÆ® Å×½ºÆ®
_·Î±×ÀÎ ¶ó¿ìÆ® Å×½ºÆ®
_CRUD ¶ó¿ìÆ® Å×½ºÆ®
_Á¶È¸ ¶ó¿ìÆ® Å×½ºÆ®
_»ý¼º ¶ó¿ìÆ® Å×½ºÆ®
_º¯°æ ¶ó¿ìÆ® Å×½ºÆ®
_»èÁ¦ ¶ó¿ìÆ® Å×½ºÆ®
8.4 Å×½ºÆ® Ä¿¹ö¸®Áö
Á¤¸®Çϱâ
CHAPTER 9 ¹èÆ÷
9.1 ¹èÆ÷ Áغñ
_ÀÇÁ¸ ¶óÀ̺귯¸® °ü¸®
_ȯ°æ º¯¼ö ¼³Á¤
9.2 µµÄ¿¸¦ »ç¿ëÇÑ ¹èÆ÷
_µµÄ¿ÆÄÀÏ ÀÛ¼º
_µµÄ¿ À̹ÌÁö ºôµå
_·ÎÄÿ¡ ¾ÖÇø®ÄÉÀÌ¼Ç ¹èÆ÷
_¾ÖÇø®ÄÉÀÌ¼Ç ½ÇÇà
9.3 µµÄ¿ À̹ÌÁö ¹èÆ÷
_µ¥ÀÌÅͺ£À̽º ¹èÆ÷
Á¤¸®Çϱâ