º£Å¸¸®´õ Èıâ ix ½ÃÀÛÇϸç xii ÀÌ Ã¥¿¡ ´ëÇÏ¿© xiv CHAPTER 1 FastAPI °³¹ß ȯ°æ ±¸Ãà 1 1.1 FastAPI ¼Ò°³ 1 1.2 Æ÷¾îÆ®¸®¸¦ ÀÌ¿ëÇÑ °¡»ó ȯ°æ°ú ÀÇÁ¸¼º °ü¸® 5 1.3 Hello, FastAPI 10 1.4 API ¹®¼È 14 1.5 µ¥ÀÌÅͺ£À̽º ¼³Á¤ 19 1.6 Ã¥¿¡¼ ¸¸µé ¾ÖÇø®ÄÉÀ̼Ç: TIL 22 1.7 ¸¶¹«¸® 23 CHAPTER 2 Ŭ¸° ¾ÆÅ°ÅØó 25 2.1 ¾ÆÅ°ÅØó°¡ ÇÊ¿äÇÑ ÀÌÀ¯ 25 2.2 ºÐÇÒ Á¤º¹ 29 2.3 Ŭ¸° ¾ÆÅ°ÅØóÀÇ ÁÖ¿ä 4°èÃþ 30 __2.3.1 µµ¸ÞÀÎ(¿£Æ¼Æ¼) °èÃþ 32 __2.3.2 ¾ÖÇø®ÄÉÀ̼Ç(À¯½º ÄÉÀ̽º) °èÃþ 33 __2.3.3 ÀÎÅÍÆäÀ̽º(ÀÎÅÍÆäÀ̽º ¾î´ðÅÍ) °èÃþ 34 __2.3.4 ÀÎÇÁ¶ó½ºÆ®·°Ã³(ÇÁ·¹ÀÓ¿öÅ© ¹× µå¶óÀ̹ö) °èÃþ 35 2.4 ÀÇÁ¸°ü°è ¿ªÀü ¿øÄ¢ 36 2.5 ¸¶¹«¸® 37 CHAPTER 3 ȸ¿ø °¡ÀÔ 39 3.1 User µµ¸ÞÀÎ 39 3.2 ȸ¿ø °¡ÀÔ À¯½º ÄÉÀ̽º 41 __3.2.1 ULID 41 __3.2.2 À¯Àú ÀúÀå 42 __3.2.3 Áߺ¹ À¯Àú °Ë»ç 44 __3.2.4 Æнº¿öµå ¾ÏÈ£È 45 3.3 ȸ¿ø °¡ÀÔ ÀÎÅÍÆäÀ̽º 47 __3.3.1 API ¶ó¿ìÅÍ 47 __3.3.2 ÆÄÀÌ´ÜƽÀ» ÀÌ¿ëÇÑ À¯È¿¼º °Ë»ç 48 __3.3.3 À¯È¿¼º °Ë»ç ¿À·ùÀÇ »óÅ Äڵ带 400 Bad Request·Î º¯°æÇϱâ 50 __3.3.4 À¯Àú »ý¼º À¯½º ÄÉÀ̽º È£Ãâ 52 __3.3.5 Ŭ·¡½º ±â¹Ý ¶ó¿ìÅÍ 53 3.4 ȸ¿ø Á¤º¸ ¿µ¼ÓÈ 54 __3.4.1 SQLAlchemy ORM Àû¿ë 54 __3.4.2 AlembicÀ¸·Î Å×ÀÌºí »ý¼º ¹× ¸®ºñÀü °ü¸® 56 __3.4.3 UserRepository ±¸Çö 62 3.5 ¸¶¹«¸® 65 CHAPTER 4 ÀÇÁ¸¼º ÁÖÀÔ 67 4.1 Depends 68 4.2 dependency-injector 69 4.3 ¸¶¹«¸® 74 CHAPTER 5 ȸ¿ø ¸®¼Ò½ºÀÇ CRUD ±â´É ¿Ï¼º 75 5.1 À¯Àú ¸Þ¸ð ¼Ó¼º Ãß°¡ 75 5.2 À¯Àú Á¤º¸ ¾÷µ¥ÀÌÆ® 78 5.3 À¯Àú ¸ñ·Ï Á¶È¸ 82 __5.3.1 Å×½ºÆ®¿ë À¯Àú µ¥ÀÌÅÍ »ý¼º 82 __5.3.2 À¯Àú ¸ñ·Ï Á¶È¸ 82 __5.3.3 ÆäÀÌ¡ 84 5.4 ȸ¿ø Å»Åð(À¯Àú »èÁ¦) 88 5.5 ÆÄÀÌ´Üƽ À¯È¿¼º °Ë»ç 91 __5.5.1 ¿äû ÆĶó¹ÌÅÍ/º»¹® °Ë»ç 91 __5.5.2 ÆÄÀÌ´Üƽ ÀÀ´ä ¸ðµ¨ 95 5.6 ¸¶¹«¸® 97 CHAPTER 6 ºñµ¿±â ÇÁ·Î±×·¡¹Ö 99 6.1 ÆÄÀ̽㿡¼ µ¿½Ã¼ºÀ» ó¸®ÇÏ´Â ¹æ¹ý 99 6.2 FastAPIÀÇ ºñµ¿±â ó¸® 101 6.3 ºñµ¿±â Àû¿ë ±âÁØ 104 6.4 ¸¶¹«¸® 105 CHAPTER 7 ·Î±×ÀÎ 107 7.1 JWT 107 __7.1.1 Çì´õ 109 __7.1.2 ÆäÀ̷εå 110 __7.1.3 ½Ã±×´Ïó 111 7.2 ·Î±×ÀÎ 112 7.3 JWT ÀÎÁõ/Àΰ¡ 116 __7.3.1 ÅäÅ«¿¡ ¿ªÇÒ Ãß°¡ 116 __7.3.2 ÀÏ¹Ý À¯Àú¿ë API ÀÎÁõ/Àΰ¡ 118 __7.3.3 ¾îµå¹Î¿ë API ÀÎÁõ/Àΰ¡ 121 7.4 ¸¶¹«¸® 124 CHAPTER 8 ȯ°æº¯¼ö 125 8.1 dotenv 126 8.2 config.py: ȯ°æº¯¼ö °ü¸® ¸ðµâ 127 8.3 ȯ°æº¯¼ö Àû¿ë 128 8.4 ¸¶¹«¸® 130 CHAPTER 9 TIL Note 131 9.1 µµ¸ÞÀÎ °èÃþ ±¸Çö 132 9.2 ¾ÖÇø®ÄÉÀÌ¼Ç °èÃþ ±¸Çö 134 9.3 ÀÎÅÍÆäÀ̽º °èÃþ ±¸Çö 139 __9.3.1 ³ëÆ® »ý¼º 140 __9.3.2 ³ëÆ® ¸ñ·Ï Á¶È¸/³ëÆ® »ó¼¼ Á¶È¸ 141 __9.3.3 ³ëÆ® ¾÷µ¥ÀÌÆ® 143 __9.3.4 ³ëÆ® »èÁ¦ 144 __9.3.5 ÅÂ±× À̸§À¸·Î ³ëÆ® °Ë»ö 144 9.4 ÀÎÇÁ¶ó °èÃþ ±¸Çö 145 __9.4.1 Note, Tag Å×ÀÌºí ¸ðµ¨¸µ 145 __9.4.2 Å×ÀÌºí ¸¶À̱׷¹ÀÌ¼Ç 147 __9.4.3 ³ëÆ® ÀúÀå¼Ò: ³ëÆ® Á¶È¸ 150 __9.4.4 ³ëÆ® ÀúÀå¼Ò: ³ëÆ® »ý¼º 152 __9.4.5 ³ëÆ® ÀúÀå¼Ò: ³ëÆ® ¾÷µ¥ÀÌÆ® 153 __9.4.6 ³ëÆ® ÀúÀå¼Ò: ³ëÆ® »èÁ¦ 154 __9.4.7 ³ëÆ® ÀúÀå¼Ò: ű׸íÀ¸·Î ³ëÆ® Á¶È¸ 155 9.5 ¸¶¹«¸® 156 CHAPTER 10 ¹é±×¶ó¿îµå ÀÛ¾÷: ȯ¿µ À̸ÞÀÏ ¹ß¼Û 157 10.1 BackgroundTasks 158 __10.1.1 BackgroundTasks¶õ? 158 __10.1.2 BackgroundTasks·Î À̸ÞÀÏ Àü¼Û 160 10.2 ¼¿·¯¸® 166 __10.2.1 ¼¿·¯¸®¶õ? 166 __10.2.2 ¼¿·¯¸® ȯ°æ ¼³Á¤ 169 __10.2.3 ¼¿·¯¸® ŽºÅ© ¼öÇà ¿¹½Ã 171 __10.2.4 ¼¿·¯¸®·Î À̸ÞÀÏ Àü¼Û 176 10.3 ¸¶¹«¸® 178 CHAPTER 11 ¹Ìµé¿þ¾î 179 11.1 ¹Ìµé¿þ¾î ¿¹½Ã ..