{"id":940,"date":"2026-05-26T23:13:24","date_gmt":"2026-05-26T15:13:24","guid":{"rendered":"https:\/\/junai.ai\/blog\/fastapi-dependency-injection-5\/"},"modified":"2026-05-26T23:13:24","modified_gmt":"2026-05-26T15:13:24","slug":"fastapi-dependency-injection-5","status":"publish","type":"post","link":"https:\/\/junai.ai\/blog\/fastapi-dependency-injection-5\/","title":{"rendered":"FastAPI \uc758\uc874\uc131 \uc8fc\uc785 \u2014 Depends \uc774\ud574\ud558\uae30"},"content":{"rendered":"\n<!-- WordPress REST API \ubc1c\ud589\uc6a9 HTML (\uc790\ub3d9 \uc0dd\uc131) -->\n<!-- WP-FEATURED-MEDIA-ID: 927 -->\n<div style=\"max-width:800px;margin:0 auto;\">\n<style>\n:root {--color-primary:#00897b;--color-accent:#009688;--color-bg:#fafbfc;--color-bg-card:#fff;--color-text:#1a202c;--color-text-muted:#64748b;--hero-start:#004d40;--hero-end:#00897b;}\n*{box-sizing:border-box;}\n.container{max-width:760px;margin:0 auto;padding:0 24px 80px;}\n.hero{background:linear-gradient(135deg,var(--hero-start) 0%,var(--hero-end) 100%);color:#fff;padding:80px 24px 60px;text-align:center;}\n.hero .eyebrow{display:inline-block;font-size:14px;color:#80cbc4;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;margin-bottom:14px;}\n.hero h1{font-size:36px;margin:0 0 16px;line-height:1.3;font-weight:800;}\n.hero p{color:#b2dfdb;font-size:18px;max-width:640px;margin:0 auto;line-height:1.6;}\n.hero img{width:100%;max-width:640px;height:auto;margin:32px auto 0;border-radius:10px;display:block;}\narticle{padding-top:48px;}\narticle h2{font-size:26px;margin:56px 0 20px;padding-left:14px;border-left:5px solid var(--color-accent);line-height:1.4;}\narticle h3{font-size:19px;margin:32px 0 12px;color:var(--color-primary);}\narticle p{margin:16px 0;}\narticle strong{color:var(--color-primary);font-weight:700;}\narticle code{background:#b2dfdb;padding:2px 8px;border-radius:4px;font-family:'SF Mono',Menlo,Consolas,monospace;font-size:14px;color:#004d40;}\n.databox{background:#b2dfdb;border-left:4px solid var(--color-accent);padding:16px 20px;margin:24px 0;border-radius:0 8px 8px 0;font-size:15.5px;}\n.databox strong{color:var(--color-primary);}\n.warnbox{background:linear-gradient(135deg,#fef3c7 0%,#fde68a 100%);padding:16px 20px;margin:24px 0;border-radius:8px;font-size:15.5px;}\n.tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:22px 0;}\ntable{width:100%;border-collapse:collapse;font-size:15px;background:var(--color-bg-card);}\nth,td{padding:11px 12px;text-align:left;border-bottom:1px solid #e2e8f0;vertical-align:top;}\nth{background:#f1f5f9;font-weight:700;color:#0f172a;}\ntd:first-child,th:first-child{font-weight:700;}\n@media (max-width:560px){.tablewrap table,.tablewrap thead,.tablewrap tbody,.tablewrap tr,.tablewrap th,.tablewrap td{display:block;width:auto;}.tablewrap thead{display:none;}.tablewrap tr{margin:0 0 14px;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden;}.tablewrap td{border:none;border-bottom:1px solid #f1f5f9;padding:9px 14px;}.tablewrap td:first-child{background:#f1f5f9;font-weight:800;font-size:15.5px;}.tablewrap td:last-child{border-bottom:none;}.tablewrap td[data-label]::before{content:attr(data-label) \" \u2014 \";font-weight:700;color:var(--color-primary);}}\n.code-block{background:#0f172a;color:#e2e8f0;padding:16px 20px;border-radius:8px;font-family:'SF Mono',Menlo,Consolas,monospace;font-size:14px;line-height:1.6;margin:20px 0;overflow-x:auto;white-space:pre;}\n.cta{background:linear-gradient(135deg,#00897b 0%,#009688 100%);color:#fff;padding:28px 24px;border-radius:12px;margin:48px 0 0;text-align:center;}\n.cta h3{color:#fff;margin:0 0 8px;font-size:20px;}\n.cta p{color:#b2dfdb;margin:0;font-size:15.5px;}\n.footer-nav{margin-top:32px;padding-top:20px;border-top:1px solid #e2e8f0;font-size:14px;color:var(--color-text-muted);}\n.footer-nav a{color:var(--color-primary);text-decoration:none;}\n@media (max-width:480px){.hero h1{font-size:26px;}.hero p{font-size:16px;}article h2{font-size:21px;}article h3{font-size:17px;}body{font-size:16px;}}\n<\/style>\n<section class=\"hero\">\n  <span class=\"eyebrow\">FastAPI \uad50\uc7ac \u00b7 5\ud3b8 \u00b7 \uc758\uc874\uc131 \uc8fc\uc785<\/span>\n  <h1>FastAPI \uc758\uc874\uc131 \uc8fc\uc785 \u2014 Depends \uc774\ud574\ud558\uae30<\/h1>\n  <p>\ub611\uac19\uc740 \ucf54\ub4dc\ub97c \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub9c8\ub2e4 \ubca0\uaef4 \uc4f0\uace0 \uc788\ub2e4\uba74 \uadf8\uac74 \uc2e0\ud638\ub2e4. \uadf8 \ubc18\ubcf5\uc744 \ud568\uc218 \ud558\ub098\ub85c \ubb36\uc5b4 &#8220;\ubc1b\uc544 \uc4f0\uac8c&#8221; \ud558\ub294 \uc7a5\uce58, Depends.<\/p>\n  <img decoding=\"async\" src=\"https:\/\/junai.ai\/blog\/wp-content\/uploads\/2026\/05\/hero-5-102.jpg\" alt=\"\uc7ac\uc0ac\uc6a9 \uac00\ub2a5\ud55c \ubd80\ud488 \ube14\ub85d\uc774 \uc5ec\ub7ec \ud30c\uc774\uc36c \ud568\uc218 \uc2ac\ub86f\uc5d0 \uaf42\ud788\uace0 \uacf5\ud1b5 \uc758\uc874\uc131 \ubaa8\ub4c8\uc774 \uae54\ub054\ud55c \ubc30\uc120\uc73c\ub85c \uc5f0\uacb0\ub418\ub294 \ubaa8\ub4c8\ud615 \uc544\ud0a4\ud14d\ucc98 \ucee8\uc149 \uc544\uc774\uc18c\uba54\ud2b8\ub9ad \uc77c\ub7ec\uc2a4\ud2b8\">\n<\/section>\n\n<div class=\"container\">\n<article>\n\n<p>4\ud3b8\uae4c\uc9c0 \uc624\uba74\uc11c \uc6b0\ub9ac\ub294 \uacbd\ub85c\u00b7\ucffc\ub9ac \ub9e4\uac1c\ubcc0\uc218\ub85c \uc785\ub825\uc744 \ubc1b\uace0, Pydantic \ubaa8\ub378\ub85c \uc694\uccad \ubcf8\ubb38\uc744 \uac80\uc99d\ud558\ub294 \ubc95\uc744 \uc775\ud614\ub2e4. \uc5d4\ub4dc\ud3ec\uc778\ud2b8\uac00 \ub450\uc138 \uac1c\uc77c \ub54c\ub294 \ubcc4 \ubb38\uc81c\uac00 \uc5c6\ub2e4. \uadf8\ub7f0\ub370 \ub77c\uc6b0\ud2b8\uac00 \uc5f4 \uac1c, \uc2a4\ubb34 \uac1c\ub85c \ub298\uc5b4\ub098\uae30 \uc2dc\uc791\ud558\uba74 \ubb18\ud558\uac8c \uac70\uc2ac\ub9ac\ub294 \uc7a5\uba74\uc774 \ubcf4\uc778\ub2e4 \u2014 <strong>\ub611\uac19\uc740 \ucf54\ub4dc \ud1a0\ub9c9\uc774 \ud568\uc218\ub9c8\ub2e4 \ubcf5\uc0ac\ub418\uc5b4 \ubd99\uc5b4 \uc788\ub2e4.<\/strong><\/p>\n\n<p>5\ud3b8\uc758 \uc8fc\uc81c <strong>\uc758\uc874\uc131 \uc8fc\uc785(Dependency Injection)<\/strong> \uc740 \ubc14\ub85c \uc774 \ubc18\ubcf5\uc744 \uc5c6\uc560\ub294 \ub3c4\uad6c\ub2e4. \uc774\ub984\uc774 \uac70\ucc3d\ud558\uc9c0\ub9cc \uac1c\ub150\uc740 \ub2e8\uc21c\ud558\uace0, FastAPI \uc5d0\uc11c\ub294 <code>Depends<\/code> \ub77c\ub294 \ud568\uc218 \ud558\ub098\ub85c \uac70\uc758 \ub2e4 \ub05d\ub09c\ub2e4. \uc774 \ud3b8\uc744 \ub9c8\uce58\uba74 \uacf5\ud1b5 \ud30c\ub77c\ubbf8\ud130\u00b7\uc778\uc99d\u00b7DB \uc138\uc158 \uac19\uc740 \uac83\uc744 \ud55c \uacf3\uc5d0 \uc815\uc758\ud574 \ub450\uace0, \ud544\uc694\ud55c \ub77c\uc6b0\ud2b8\uc5d0\uc11c &#8220;\ubc1b\uc544 \uc4f0\ub294&#8221; \uad6c\uc870\ub97c \uc9e4 \uc218 \uc788\uac8c \ub41c\ub2e4.<\/p>\n\n<h2>1. \uac19\uc740 \ucf54\ub4dc\uac00 \ubc18\ubcf5\ub420 \ub54c \u2014 \ubb34\uc5c7\uc774 \ubb38\uc81c\uc778\uac00<\/h2>\n\n<p>\uc608\ub97c \ub4e4\uc5b4 \ubaa9\ub85d\uc744 \ub3cc\ub824\uc8fc\ub294 \uc5d4\ub4dc\ud3ec\uc778\ud2b8\uac00 \uc5ec\ub7ec \uac1c \uc788\ub2e4\uace0 \ud558\uc790. \uc0c1\ud488 \ubaa9\ub85d, \uc8fc\ubb38 \ubaa9\ub85d, \uc0ac\uc6a9\uc790 \ubaa9\ub85d\u2026 \uc774\ub4e4\uc740 \ub300\uac1c \ub611\uac19\uc740 \ud398\uc774\uc9c0\ub124\uc774\uc158 \uc635\uc158\uc744 \ubc1b\ub294\ub2e4. \uac80\uc0c9\uc5b4 <code>q<\/code>, \uac74\ub108\ub6f8 \uac1c\uc218 <code>skip<\/code>, \uac00\uc838\uc62c \ucd5c\ub300 \uac1c\uc218 <code>limit<\/code>. \uadf8\ub798\uc11c \ucf54\ub4dc\ub294 \uc790\uc5f0\uc2a4\ub7fd\uac8c \uc774\ub807\uac8c \uc313\uc778\ub2e4.<\/p>\n\n<div class=\"code-block\">@app.get(&#8220;\/items&#8221;)\ndef read_items(q: str | None = None, skip: int = 0, limit: int = 10):\n    return {&#8220;q&#8221;: q, &#8220;skip&#8221;: skip, &#8220;limit&#8221;: limit}\n\n@app.get(&#8220;\/users&#8221;)\ndef read_users(q: str | None = None, skip: int = 0, limit: int = 10):\n    return {&#8220;q&#8221;: q, &#8220;skip&#8221;: skip, &#8220;limit&#8221;: limit}\n\n@app.get(&#8220;\/orders&#8221;)\ndef read_orders(q: str | None = None, skip: int = 0, limit: int = 10):\n    return {&#8220;q&#8221;: q, &#8220;skip&#8221;: skip, &#8220;limit&#8221;: limit}<\/div>\n\n<p>\uac19\uc740 \uc138 \uc904\uc9dc\ub9ac \ub9e4\uac1c\ubcc0\uc218 \ubb36\uc74c\uc774 \uc138 \uad70\ub370\uc5d0 \ub611\uac19\uc774 \ub4e4\uc5b4\uac00 \uc788\ub2e4. \uc9c0\uae08\uc774\uc57c \ubcc4\uac83 \uc544\ub2c8\uc9c0\ub9cc, \uc5b4\ub290 \ub0a0 <code>limit<\/code> \uc758 \uae30\ubcf8\uac12\uc744 10 \uc5d0\uc11c 20 \uc73c\ub85c \ubc14\uafb8\uae30\ub85c \ud588\ub2e4\uace0 \ud574 \ubcf4\uc790. \ud568\uc218 \uc138 \uacf3\uc744 \uc804\ubd80 \ucc3e\uc544 \uace0\uccd0\uc57c \ud55c\ub2e4. \ud558\ub098\ub77c\ub3c4 \ube60\ub728\ub9ac\uba74, \uc5b4\ub5a4 \ubaa9\ub85d\ub9cc \ub2e4\ub974\uac8c \ub3d9\uc791\ud558\ub294 \ubbf8\ubb18\ud55c \ubc84\uadf8\uac00 \uc0dd\uae34\ub2e4. \uc778\uc99d \uac80\uc0ac\ub098 DB \uc5f0\uacb0 \ucf54\ub4dc\ub77c\uba74 \ub354 \uc2ec\uac01\ud558\ub2e4.<\/p>\n\n<p>\uc5ec\uae30\uc11c \ubc1c\uc0c1\uc744 \uc0b4\uc9dd \ub4a4\uc9d1\uc5b4 \ubcf4\uc790. <strong>\uc9c0\uae08\uae4c\uc9c0 \uac01 \ud568\uc218\ub294 \uc790\uae30\uc5d0\uac8c \ud544\uc694\ud55c \uc7ac\ub8cc(\ud30c\ub77c\ubbf8\ud130)\ub97c \uc9c1\uc811 \uad6c\ud558\uace0 \uc788\uc5c8\ub2e4.<\/strong> \uc758\uc874\uc131 \uc8fc\uc785\uc740 \uadf8 \ubc29\ud5a5\uc744 \ubc14\uafbc\ub2e4. \ud568\uc218\ub294 &#8220;\ub098\ub294 \uc774\ub7f0 \uc7ac\ub8cc\uac00 \ud544\uc694\ud574&#8221; \ub77c\uace0 <strong>\uc120\uc5b8\ub9cc<\/strong> \ud558\uace0, \uadf8 \uc7ac\ub8cc\ub97c \uc2e4\uc81c\ub85c \ub9c8\ub828\ud574\uc11c \uc190\uc5d0 \uc950\uc5ec \uc8fc\ub294 \uc77c\uc740 \ud504\ub808\uc784\uc6cc\ud06c\uc5d0 \ub9e1\uae34\ub2e4.<\/p>\n\n<div class=\"databox\">\n<strong>\uc26c\uc6b4 \ube44\uc720<\/strong> \u2014 \uc694\ub9ac\uc0ac\uac00 \ub9e4\ubc88 \uc9c1\uc811 \ubc2d\uc5d0 \uac00\uc11c \ucc44\uc18c\ub97c \uce90 \uc624\ub294 \ub300\uc2e0, \uc190\uc9c8\ub41c \uc7ac\ub8cc\ub97c \ubc1b\uc544\uc11c \uc694\ub9ac\uc5d0\ub9cc \uc9d1\uc911\ud558\ub294 \uac83\uacfc \uac19\ub2e4. \uc7ac\ub8cc\ub97c \uc5b4\ub514\uc11c \uc5b4\ub5bb\uac8c \ub9c8\ub828\ud558\ub294\uc9c0\ub294 <strong>\ud55c \uacf3(\uc758\uc874\uc131 \ud568\uc218)<\/strong> \uc5d0 \uc801\uc5b4 \ub450\uace0, \uc694\ub9ac\uc0ac(\uc5d4\ub4dc\ud3ec\uc778\ud2b8)\ub294 \uadf8\uc800 &#8220;\uc7ac\ub8cc \uc8fc\uc138\uc694&#8221; \ub77c\uace0 <strong>\ubc1b\uc544 \uc4f4\ub2e4<\/strong>. \uc7ac\ub8cc \uacf5\uae09\ucc98\uac00 \ubc14\ub00c\uc5b4\ub3c4 \uc694\ub9ac\uc0ac \ucf54\ub4dc\ub294 \uc190\ub308 \ud544\uc694\uac00 \uc5c6\ub2e4 \u2014 \uc774\uac8c &#8220;\uc8fc\uc785(injection)&#8221; \uc774\ub77c\ub294 \ub9d0\uc758 \ud575\uc2ec\uc774\ub2e4.\n<\/div>\n\n<h2>2. Depends \uccab \uc0ac\uc6a9 \u2014 \uacf5\ud1b5 \ud30c\ub77c\ubbf8\ud130\ub97c \ud568\uc218\ub85c \ube7c\uae30<\/h2>\n\n<p>\uc704\uc758 \uc911\ubcf5\ub41c \uc138 \uc904\uc744 \ubcc4\ub3c4 \ud568\uc218\ub85c \ubf51\uc544\ub0b4 \ubcf4\uc790. \uc774 \ud568\uc218\uac00 \ubc14\ub85c <strong>\uc758\uc874\uc131(dependency)<\/strong> \uc774\ub2e4. \uc774\ub984 \uadf8\ub300\ub85c, \uc5d4\ub4dc\ud3ec\uc778\ud2b8\uac00 &#8220;\uc758\uc874\ud558\ub294&#8221; \ucf54\ub4dc\ub2e4.<\/p>\n\n<div class=\"code-block\">from fastapi import FastAPI, Depends\n\napp = FastAPI()\n\ndef common_params(q: str | None = None, skip: int = 0, limit: int = 10):\n    return {&#8220;q&#8221;: q, &#8220;skip&#8221;: skip, &#8220;limit&#8221;: limit}<\/div>\n\n<p><code>common_params<\/code> \ub294 \ud3c9\ubc94\ud55c \ud568\uc218\ucc98\ub7fc \ubcf4\uc774\uc9c0\ub9cc, \ub9e4\uac1c\ubcc0\uc218\uc5d0 \uc801\ud78c \ud0c0\uc785\ud78c\ud2b8\uc640 \uae30\ubcf8\uac12\uc740 \uc6b0\ub9ac\uac00 4\ud3b8\uc5d0\uc11c \ubcf8 <strong>\ucffc\ub9ac \ub9e4\uac1c\ubcc0\uc218 \uaddc\uce59<\/strong> \uc744 \uadf8\ub300\ub85c \ub530\ub978\ub2e4. \uc774\uc81c \uc774 \ud568\uc218\ub97c \uc5d4\ub4dc\ud3ec\uc778\ud2b8\uc5d0 &#8220;\uc8fc\uc785&#8221; \ud55c\ub2e4. \ubc29\ubc95\uc740 \uc778\uc790 \uc790\ub9ac\uc5d0 <code>Depends()<\/code> \ub97c \uc801\ub294 \uac83\ubfd0\uc774\ub2e4.<\/p>\n\n<div class=\"code-block\">@app.get(&#8220;\/items&#8221;)\ndef read_items(commons: dict = Depends(common_params)):\n    return {&#8220;source&#8221;: &#8220;items&#8221;, **commons}\n\n@app.get(&#8220;\/users&#8221;)\ndef read_users(commons: dict = Depends(common_params)):\n    return {&#8220;source&#8221;: &#8220;users&#8221;, **commons}<\/div>\n\n<p>\uc774\uc81c <code>read_items<\/code> \ud568\uc218 \ubcf8\ubb38\uc5d0\ub294 \ub354 \uc774\uc0c1 <code>q<\/code>, <code>skip<\/code>, <code>limit<\/code> \uac00 \ubcf4\uc774\uc9c0 \uc54a\ub294\ub2e4. \ub300\uc2e0 <code>commons<\/code> \ub77c\ub294 \ubcc0\uc218 \ud558\ub098\ub85c \ubb36\uc5ec \ub4e4\uc5b4\uc628\ub2e4. \ub3d9\uc791 \uc21c\uc11c\ub294 \uc774\ub807\ub2e4.<\/p>\n\n<p>\ub204\uad70\uac00 <code>\/items?q=phone&amp;limit=5<\/code> \ub85c \uc694\uccad\ud558\uba74, FastAPI \ub294 \uba3c\uc800 <strong>\uc758\uc874\uc131 \ud568\uc218 <code>common_params<\/code> \ub97c \uc2e4\ud589<\/strong>\ud55c\ub2e4. \uc774\ub54c URL \uc758 \ucffc\ub9ac\uac12\ub4e4\uc774 \uadf8 \ud568\uc218\uc758 \ub9e4\uac1c\ubcc0\uc218\ub85c \ub4e4\uc5b4\uac00 \uac80\uc99d\u00b7\ubcc0\ud658\uc744 \uac70\uce5c\ub2e4. \ud568\uc218\uac00 \ub3cc\ub824\uc900 \ub515\uc154\ub108\ub9ac\uac00 \uace7 <code>commons<\/code> \uc758 \uac12\uc774 \ub418\uc5b4, \uadf8\uc81c\uc57c <code>read_items<\/code> \ubcf8\ubb38\uc774 \uc2e4\ud589\ub41c\ub2e4. \uc989 <strong>FastAPI \uac00 \uc758\uc874\uc131\uc744 \uba3c\uc800 \uc2e4\ud589\ud558\uace0, \uadf8 \uacb0\uacfc\ub97c \uc778\uc790\ub85c \ub07c\uc6cc \ub123\uc740 \ub2e4\uc74c, \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub97c \ud638\ucd9c<\/strong>\ud558\ub294 \uac83\uc774\ub2e4.<\/p>\n\n<p>\ub364\uc73c\ub85c \ub530\ub77c\uc624\ub294 \uc774\ub4dd\uc774 \ud558\ub098 \ub354 \uc788\ub2e4. <code>common_params<\/code> \uc758 \ub9e4\uac1c\ubcc0\uc218\ub4e4\ub3c4 \uacb0\uad6d \ucffc\ub9ac \ub9e4\uac1c\ubcc0\uc218\uc774\uae30 \ub54c\ubb38\uc5d0, <code>\/docs<\/code> \uc758 \uc790\ub3d9 \ubb38\uc11c\uc5d0 <code>q<\/code>\u00b7<code>skip<\/code>\u00b7<code>limit<\/code> \uac00 \uadf8\ub300\ub85c \ub178\ucd9c\ub41c\ub2e4. \uc758\uc874\uc131\uc73c\ub85c \ube7c\ub0c8\ub2e4\uace0 \ud574\uc11c \ubb38\uc11c\uc5d0\uc11c \uc0ac\ub77c\uc9c0\uc9c0 \uc54a\ub294\ub2e4. \uac80\uc99d\uacfc \ubb38\uc11c\ud654 \ub2a5\ub825\uc740 \uace0\uc2a4\ub780\ud788 \uc720\uc9c0\ub41c\ub2e4.<\/p>\n\n<h2>3. \uc7ac\uc0ac\uc6a9\uacfc \ud074\ub798\uc2a4 \uc758\uc874\uc131<\/h2>\n\n<p>\uc758\uc874\uc131 \uc8fc\uc785\uc758 \uc9c4\uc9dc \uac12\uc5b4\uce58\ub294 <strong>\uc7ac\uc0ac\uc6a9<\/strong> \uc5d0\uc11c \ub098\uc628\ub2e4. \uc774\uc81c \ud398\uc774\uc9c0\ub124\uc774\uc158 \uaddc\uce59\uc744 \ubc14\uafb8\uace0 \uc2f6\uc73c\uba74 <code>common_params<\/code> \ud568\uc218 \ud55c \uacf3\ub9cc \uace0\uce58\uba74 \ub41c\ub2e4. \uadf8 \ud568\uc218\ub97c <code>Depends<\/code> \ub85c \ubc1b\uc544 \uc4f0\ub294 \ubaa8\ub4e0 \ub77c\uc6b0\ud2b8\uac00 \ub3d9\uc2dc\uc5d0 \uc0c8 \uaddc\uce59\uc744 \ub530\ub978\ub2e4. \ub77c\uc6b0\ud2b8\uac00 50 \uac1c\uc5ec\ub3c4 \uc218\uc815 \uc9c0\uc810\uc740 \ud558\ub098\ub2e4.<\/p>\n\n<h3>\ub515\uc154\ub108\ub9ac\ubcf4\ub2e4 \uba85\ud655\ud55c \ud074\ub798\uc2a4 \uc758\uc874\uc131<\/h3>\n\n<p>\uc758\uc874\uc131\uc73c\ub85c \ud568\uc218\ub9cc \uc4f8 \uc218 \uc788\ub294 \uac74 \uc544\ub2c8\ub2e4. <strong>\ud074\ub798\uc2a4<\/strong> \ub3c4 \uc758\uc874\uc131\uc774 \ub420 \uc218 \uc788\ub2e4. \ud30c\uc774\uc36c\uc5d0\uc11c \ud074\ub798\uc2a4\ub97c \ud638\ucd9c\ud558\uba74(<code>Pagination()<\/code>) <code>__init__<\/code> \uc774 \uc2e4\ud589\ub418\ub2c8, FastAPI \uc785\uc7a5\uc5d0\uc11c\ub294 \ud074\ub798\uc2a4\ub3c4 &#8220;\ud638\ucd9c \uac00\ub2a5\ud55c \ubb34\uc5b8\uac00&#8221; \uc77c \ubfd0\uc774\ub2e4. \uadf8\ub798\uc11c \ud074\ub798\uc2a4 \uc790\uccb4\ub97c \uadf8\ub300\ub85c <code>Depends<\/code> \uc5d0 \ub118\uae34\ub2e4.<\/p>\n\n<div class=\"code-block\">class Pagination:\n    def __init__(self, skip: int = 0, limit: int = 10):\n        self.skip = skip\n        self.limit = limit\n\n@app.get(&#8220;\/products&#8221;)\ndef read_products(page: Pagination = Depends(Pagination)):\n    return {&#8220;skip&#8221;: page.skip, &#8220;limit&#8221;: page.limit}<\/div>\n\n<p><code>__init__<\/code> \uc758 \ub9e4\uac1c\ubcc0\uc218\uac00 \uadf8\ub300\ub85c \ucffc\ub9ac \ub9e4\uac1c\ubcc0\uc218\uac00 \ub41c\ub2e4. \uacb0\uacfc\ub85c <code>page<\/code> \uc5d0\ub294 <code>Pagination<\/code> \uac1d\uccb4\uac00 \ub4e4\uc5b4\uc624\uace0, <code>page.skip<\/code> \ucc98\ub7fc <strong>\uc810(.) \uc73c\ub85c \ub610\ub837\ud558\uac8c<\/strong> \uaebc\ub0b4 \uc4f8 \uc218 \uc788\ub2e4. \ub515\uc154\ub108\ub9ac\uc758 <code>commons[\"skip\"]<\/code> \ubcf4\ub2e4 \uc624\ud0c0\uc5d0 \uac15\ud558\uace0, \uc5d0\ub514\ud130\uc758 \uc790\ub3d9\uc644\uc131\ub3c4 \ubc1b\ub294\ub2e4. \ub370\uc774\ud130\uac00 \ub2e8\uc21c\ud558\uba74 \ud568\uc218\ub85c, \uad6c\uc870\uac00 \uc880 \uc788\uc73c\uba74 \ud074\ub798\uc2a4\ub85c \u2014 \uc815\ub3c4\ub85c \uae30\uc5b5\ud558\uba74 \ucda9\ubd84\ud558\ub2e4.<\/p>\n\n<div class=\"databox\">\n<strong>\ud55c \uae00\uc790 \uc904\uc774\ub294 \ub2e8\ucd95 \ud45c\uae30<\/strong> \u2014 <code>page: Pagination = Depends(Pagination)<\/code> \ucc98\ub7fc \ud0c0\uc785\uacfc <code>Depends<\/code> \uc778\uc790\uac00 \uac19\uc740 \ud074\ub798\uc2a4\ub85c \uacb9\uce60 \ub54c\ub294, FastAPI \uac00 \uc54c\uc544\uc11c \ucd94\ub860\ud558\ub3c4\ub85d <code>page: Pagination = Depends()<\/code> \ub85c \uc778\uc790\ub97c \ube44\uc6cc \ub458 \uc218 \uc788\ub2e4. \ud074\ub798\uc2a4\ub97c \uc758\uc874\uc131\uc73c\ub85c \uc4f8 \ub54c\ub9cc \ud1b5\ud558\ub294 \ud3b8\uc758 \ubb38\ubc95\uc774\ub2e4.\n<\/div>\n\n<h2>4. yield \uc758\uc874\uc131 \u2014 \uc815\ub9ac\uae4c\uc9c0 \ucc45\uc784\uc9c0\uae30<\/h2>\n\n<p>\uc9c0\uae08\uae4c\uc9c0\uc758 \uc758\uc874\uc131\uc740 \uac12\uc744 <code>return<\/code> \ud558\uace0 \ub05d\ub0ac\ub2e4. \uadf8\ub7f0\ub370 \uc5b4\ub5a4 \uc790\uc6d0\uc740 <strong>\ub2e4 \uc4f0\uace0 \ub098\uc11c \ubc18\ub4dc\uc2dc \ub2eb\uc544 \uc918\uc57c<\/strong> \ud55c\ub2e4. \ub300\ud45c\uc801\uc778 \uac8c \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc138\uc158\uc774\ub2e4. \uc5f4\uc5b4\uc11c \uc4f0\uace0, \ub05d\ub098\uba74 \ub2eb\uc544\uc57c \uc5f0\uacb0\uc774 \uc0c8\uc9c0 \uc54a\ub294\ub2e4. \uc774\ub7f4 \ub54c \uc758\uc874\uc131 \ud568\uc218\uc5d0\uc11c <code>return<\/code> \ub300\uc2e0 <code>yield<\/code> \ub97c \uc4f4\ub2e4.<\/p>\n\n<div class=\"code-block\">def get_db():\n    db = SessionLocal()\n    try:\n        yield db\n    finally:\n        db.close()\n\n@app.get(&#8220;\/articles&#8221;)\ndef read_articles(db = Depends(get_db)):\n    # db \ub85c \uc870\ud68c\ud55c\ub2e4\uace0 \uac00\uc815\n    return {&#8220;db_ready&#8221;: db is not None}<\/div>\n\n<p>\ud750\ub984\uc744 \ub530\ub77c\uac00 \ubcf4\uc790. \uc694\uccad\uc774 \ub4e4\uc5b4\uc624\uba74 FastAPI \uac00 <code>get_db<\/code> \ub97c \uc2e4\ud589\ud558\ub2e4\uac00 <code>yield db<\/code> \uc5d0\uc11c <strong>\uc7a0\uc2dc \uba48\ucd94\uace0<\/strong>, \uadf8 <code>db<\/code> \ub97c \uc5d4\ub4dc\ud3ec\uc778\ud2b8\uc5d0 \ub118\uae34\ub2e4. <code>read_articles<\/code> \uac00 \uc751\ub2f5\uc744 \ub2e4 \ub9cc\ub4e4\uace0 \ub098\uba74, FastAPI \uac00 \uba48\ucdb0 \ub480\ub358 <code>get_db<\/code> \ub85c \ub3cc\uc544\uc640 <code>yield<\/code> \uc774\ud6c4 \ucf54\ub4dc, \uc989 <code>finally<\/code> \ube14\ub85d\uc744 \uc2e4\ud589\ud55c\ub2e4. \uadf8\ub798\uc11c <strong>db.close() \uac00 \ud56d\uc0c1 \ud638\ucd9c<\/strong>\ub41c\ub2e4. \uc911\uac04\uc5d0 \uc5d0\ub7ec\uac00 \ub098\ub3c4 <code>finally<\/code> \ub77c \ube60\uc9d0\uc5c6\uc774 \uc815\ub9ac\ub41c\ub2e4.<\/p>\n\n<p>\ud55c\ub9c8\ub514\ub85c <code>yield<\/code> \uc758\uc874\uc131\uc740 <strong>&#8220;\uc4f0\uae30 \uc804 \uc900\ube44 \u2192 \uc5d4\ub4dc\ud3ec\uc778\ud2b8 \uc2e4\ud589 \u2192 \uc4f4 \ub4a4 \uc815\ub9ac&#8221;<\/strong> \ub97c \ud55c \ud568\uc218 \uc548\uc5d0 \ub2f4\ub294\ub2e4. <code>yield<\/code> \uc717\ubd80\ubd84\uc740 \uc900\ube44, \uc544\ub7ab\ubd80\ubd84\uc740 \ub4b7\uc815\ub9ac\ub2e4. 7\ud3b8\uc5d0\uc11c SQLAlchemy \ub85c \uc2e4\uc81c DB \ub97c \ubd99\uc77c \ub54c \uc774 <code>get_db<\/code> \ud328\ud134\uc744 \uac70\uc758 \uadf8\ub300\ub85c \ub2e4\uc2dc \ub9cc\ub098\uac8c \ub418\ub2c8, \uc9c0\uae08\uc740 \ubaa8\uc591\uc5d0\ub9cc \uc775\uc219\ud574\uc9c0\uba74 \ub41c\ub2e4.<\/p>\n\n<h3>\uc911\ucca9 \uc758\uc874\uc131 \u2014 \uc758\uc874\uc131\uc774 \ub610 \ub2e4\ub978 \uc758\uc874\uc131\uc744 \uac00\uc9c8 \ub54c<\/h3>\n\n<p>\uc758\uc874\uc131 \ud568\uc218 \uc5ed\uc2dc \ud3c9\ubc94\ud55c \ud568\uc218\ub77c\uc11c, \uadf8 \uc548\uc5d0\uc11c <strong>\ub610 \ub2e4\ub978 \uc758\uc874\uc131\uc744 \ubc1b\uc744 \uc218 \uc788\ub2e4.<\/strong> \uc608\ucee8\ub300 \ud1a0\ud070\uc5d0\uc11c \uc0ac\uc6a9\uc790\ub97c \uaebc\ub0b4\ub294 <code>get_current_user<\/code> \uc758\uc874\uc131\uc774 DB \uc138\uc158 <code>get_db<\/code> \uc5d0 \uc758\uc874\ud558\uace0, \uc5b4\ub5a4 \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub294 \uadf8 <code>get_current_user<\/code> \uc5d0 \uc758\uc874\ud558\ub294 \uc2dd\uc774\ub2e4. FastAPI \ub294 \uc774 \uc758\uc874\uc131 \uc0ac\uc2ac\uc744 \ub05d\uae4c\uc9c0 \ub530\ub77c\uac00 <strong>\uac00\uc7a5 \uc548\ucabd\ubd80\ud130 \ucc28\ub840\ub85c \ud574\uacb0<\/strong>\ud55c \ub4a4 \uacb0\uacfc\ub97c \uc704\ub85c \uc804\ub2ec\ud55c\ub2e4. \uc6b0\ub9ac\ub294 \uc0ac\uc2ac\uc758 \ub9e8 \ub05d\uc5d0\uc11c \ud544\uc694\ud55c \uac83\ub9cc <code>Depends<\/code> \ub85c \ubc1b\uc73c\uba74, \uadf8 \ub4a4\uc5d0 \uc904\uc904\uc774 \ub9e4\ub2ec\ub9b0 \uc900\ube44 \uacfc\uc815\uc740 \ud504\ub808\uc784\uc6cc\ud06c\uac00 \uc54c\uc544\uc11c \ucc98\ub9ac\ud55c\ub2e4. \uc778\uc99d\ucc98\ub7fc \ub2e8\uacc4\uac00 \uc5ec\ub7ec \uac1c\uc778 \ub85c\uc9c1\uc744 \uae54\ub054\ud558\uac8c \uc313\uc744 \uc218 \uc788\ub294 \uc774\uc720\ub2e4.<\/p>\n\n<div class=\"warnbox\">\n<strong>\uc8fc\uc758 \u2014 \uc758\uc874\uc131\uc740 \uc694\uccad \ub2e8\uc704\ub85c \uc2e4\ud589\ub41c\ub2e4<\/strong> \u2014 \ud55c \uc694\uccad \uc548\uc5d0\uc11c \uac19\uc740 \uc758\uc874\uc131\uc744 \uc5ec\ub7ec \uacf3\uc774 \ubc1b\uc544\ub3c4 FastAPI \ub294 <strong>\uae30\ubcf8\uc801\uc73c\ub85c \ud55c \ubc88\ub9cc \uc2e4\ud589\ud558\uace0 \uacb0\uacfc\ub97c \uacf5\uc720<\/strong>\ud55c\ub2e4(<code>Depends(..., use_cache=True)<\/code> \uac00 \uae30\ubcf8\uac12). \ub2e4\ub9cc \uc694\uccad\uc774 \ubc14\ub00c\uba74 \ub2e4\uc2dc \uc2e4\ud589\ub418\ubbc0\ub85c, \ubb34\uac70\uc6b4 \ucd08\uae30\ud654(\uc608: \uac70\ub300\ud55c \ubaa8\ub378 \ub85c\ub529)\ub97c \uc758\uc874\uc131\uc5d0 \ub123\uc73c\uba74 \uc694\uccad\ub9c8\ub2e4 \ubc18\ubcf5\ub420 \uc218 \uc788\ub2e4. \uadf8\ub7f0 \uc790\uc6d0\uc740 \uc571 \uc2dc\uc791 \uc2dc \ud55c \ubc88\ub9cc \uc900\ube44\ud574 \ub450\uace0, \uc758\uc874\uc131\uc5d0\uc11c\ub294 \uadf8 \uc900\ube44\ub41c \uac83\uc744 <strong>\uaebc\ub0b4 \uc8fc\uae30\ub9cc<\/strong> \ud558\ub294 \uac8c \uc815\uc11d\uc774\ub2e4.\n<\/div>\n\n<h2>5. \uc815\ub9ac \u2014 Depends \ud55c \uc904\uc774 \ubc14\uafb8\ub294 \uac83<\/h2>\n\n<p>\uc774\ubc88 \ud3b8\uc758 \ud070 \uadf8\ub9bc\uc744 \ub2e4\uc2dc \ubaa8\uc544 \ubcf8\ub2e4.<\/p>\n\n<div class=\"tablewrap\">\n<table>\n<thead><tr><th>\ud328\ud134<\/th><th>\uc5b8\uc81c \uc4f0\ub098<\/th><th>\ud575\uc2ec \ud615\ud0dc<\/th><\/tr><\/thead>\n<tbody>\n<tr><td>\ud568\uc218 \uc758\uc874\uc131<\/td><td data-label=\"\uc5b8\uc81c\">\uacf5\ud1b5 \ucffc\ub9ac\u00b7\uac04\ub2e8\ud55c \uacf5\uc720 \ub85c\uc9c1<\/td><td data-label=\"\ud615\ud0dc\">Depends(common_params)<\/td><\/tr>\n<tr><td>\ud074\ub798\uc2a4 \uc758\uc874\uc131<\/td><td data-label=\"\uc5b8\uc81c\">\uad6c\uc870 \uc788\ub294 \uac12\uc744 \uc810(.)\uc73c\ub85c \uaebc\ub0bc \ub54c<\/td><td data-label=\"\ud615\ud0dc\">Depends(Pagination)<\/td><\/tr>\n<tr><td>yield \uc758\uc874\uc131<\/td><td data-label=\"\uc5b8\uc81c\">DB \uc138\uc158 \ub4f1 \uc815\ub9ac\uac00 \ud544\uc694\ud55c \uc790\uc6d0<\/td><td data-label=\"\ud615\ud0dc\">try \/ yield \/ finally<\/td><\/tr>\n<tr><td>\uc911\ucca9 \uc758\uc874\uc131<\/td><td data-label=\"\uc5b8\uc81c\">\uc778\uc99d\ucc98\ub7fc \ub2e8\uacc4\uac00 \uc5ec\ub7ec \uac1c\uc77c \ub54c<\/td><td data-label=\"\ud615\ud0dc\">\uc758\uc874\uc131 \uc548\uc5d0\uc11c \ub610 Depends<\/td><\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n\n<h3>\uc694\uc57d<\/h3>\n\n<p>\uc758\uc874\uc131 \uc8fc\uc785\uc740 <strong>&#8220;\ud544\uc694\ud55c \uc7ac\ub8cc\ub97c \uc9c1\uc811 \uad6c\ud558\uc9c0 \ub9d0\uace0 \ubc1b\uc544 \uc4f4\ub2e4&#8221;<\/strong> \ub294 \ud55c \ubb38\uc7a5\uc73c\ub85c \uc555\ucd95\ub41c\ub2e4. FastAPI \uc5d0\uc11c\ub294 \uc778\uc790 \uc790\ub9ac\uc5d0 <code>Depends()<\/code> \ub97c \uc801\uc73c\uba74, \ud504\ub808\uc784\uc6cc\ud06c\uac00 \uc758\uc874\uc131 \ud568\uc218\ub97c \uba3c\uc800 \uc2e4\ud589\ud574 \uadf8 \uacb0\uacfc\ub97c \ub07c\uc6cc \ub123\uc5b4 \uc900\ub2e4. \ub355\ubd84\uc5d0 \uacf5\ud1b5 \ud30c\ub77c\ubbf8\ud130\u00b7\uc778\uc99d\u00b7DB \uc138\uc158 \uac19\uc740 \ucf54\ub4dc\ub97c <strong>\ud55c \uacf3\uc5d0 \uc815\uc758\ud558\uace0 \uc5b4\ub514\uc11c\ub4e0 \uc7ac\uc0ac\uc6a9<\/strong>\ud560 \uc218 \uc788\uace0, \uaddc\uce59\uc774 \ubc14\ub00c\uc5b4\ub3c4 \uc218\uc815 \uc9c0\uc810\uc740 \ud558\ub098\ub85c \uc904\uc5b4\ub4e0\ub2e4. \ub2e8\uc21c\ud558\uba74 \ud568\uc218\ub85c, \uad6c\uc870\uac00 \uc788\uc73c\uba74 \ud074\ub798\uc2a4\ub85c, \uc815\ub9ac\uac00 \ud544\uc694\ud558\uba74 <code>yield<\/code> \ub85c \u2014 \uc774 \uc138 \uac00\uc9c0 \ud615\ud0dc\uc640, \uc758\uc874\uc131\uc774 \ub610 \ub2e4\ub978 \uc758\uc874\uc131\uc744 \ubd80\ub974\ub294 \uc911\ucca9 \uad6c\uc870\uae4c\uc9c0\uac00 5\ud3b8\uc758 \uc804\ubd80\ub2e4. \ub2e4\uc74c \ud3b8\uc5d0\uc11c\ub294 \ub298\uc5b4\ub09c \ub77c\uc6b0\ud2b8\uc640 \uc758\uc874\uc131\uc744 <strong>\ud30c\uc77c\u00b7\ud3f4\ub354 \ub2e8\uc704\ub85c \ucabc\uac1c \uad00\ub9ac<\/strong>\ud558\ub294 \ubc95\uc744 \ub2e4\ub8ec\ub2e4.<\/p>\n\n<div class=\"cta\">\n<h3>\ub2e4\uc74c \ud3b8 \uc608\uace0 \u2014 APIRouter \ub85c \ud504\ub85c\uc81d\ud2b8 \uad6c\uc870\ud654<\/h3>\n<p>\ud55c \ud30c\uc77c\uc5d0 \ub2e4 \ubab0\uc544\ub123\ub358 \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub97c APIRouter \ub85c \uae30\ub2a5\ubcc4\ub85c \ub098\ub204\uace0, \ud3f4\ub354 \uad6c\uc870\uc640 \uacf5\ud1b5 \uc758\uc874\uc131\uc744 \ub77c\uc6b0\ud130 \ub2e8\uc704\ub85c \ubb36\ub294 \ubc95\uc744 \ubc30\uc6b4\ub2e4.<\/p>\n<\/div>\n\n<div class=\"footer-nav\">\n\uc2dc\ub9ac\uc988 \u00b7 <a href=\"https:\/\/junai.ai\/blog\/category\/fastapi\/\">\uc27d\uac8c \ubc30\uc6b0\ub294 FastAPI<\/a> \u00b7 \ud568\uaed8 \ubcf4\uae30: <a href=\"https:\/\/junai.ai\/blog\/category\/python\/\">\ud30c\uc774\uc36c \uae30\ucd08 \uc2dc\ub9ac\uc988<\/a>\n<\/div>\n\n<\/article>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub9c8\ub2e4 \ubca0\uaef4 \uc4f0\ub358 \uacf5\ud1b5 \ucf54\ub4dc\ub97c Depends \ud558\ub098\ub85c \ud569\uce5c\ub2e4. \ud568\uc218\u00b7\ud074\ub798\uc2a4 \uc758\uc874\uc131, yield \ub85c DB \uc138\uc158 \uc815\ub9ac\uae4c\uc9c0. FastAPI \uad50\uc7ac 5\ud3b8.<\/p>\n","protected":false},"author":1,"featured_media":927,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[25],"tags":[],"class_list":["post-940","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-fastapi"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/posts\/940","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/comments?post=940"}],"version-history":[{"count":0,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/posts\/940\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/media\/927"}],"wp:attachment":[{"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/media?parent=940"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/categories?post=940"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/tags?post=940"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}