# ๐
**FastAPI** โ๏ธ ๐ถ ๐๏ธ โ๏ธ ๐๏ธ **๐ ๐** โ๏ธ.
โซ๏ธ ๐ ๐ถ ๐
โ๏ธ, & โ โซ๏ธ ๐ถ โฉ ๐ ๐ฉโ๐ป ๐ ๏ธ ๐ ๐ฆฒ โฎ๏ธ **FastAPI**.
## โซ๏ธโ "๐ ๐"
**"๐ ๐"** โ, ๐, ๐ ๐ค ๐ ๐ ๐ (๐ ๐ผ, ๐ *โก ๐ ๏ธ ๐ข*) ๐ฃ ๐ ๐ โซ๏ธ ๐ ๐ท & โ๏ธ: "๐".
& โคด๏ธ, ๐ โ๏ธ (๐ ๐ผ **FastAPI**) ๐ โ ๐
๐จ โซ๏ธโ ๐ช ๐ ๐ ๐ โฎ๏ธ ๐ ๐ช ๐ ("๐" ๐).
๐ ๐ถ โ ๐โ ๐ ๐ช:
* โ๏ธ ๐ฐ โ (๐ ๐ โ ๐ & ๐).
* ๐ฐ ๐ฝ ๐.
* ๐ ๏ธ ๐โโ, ๐ค, ๐ ๐, โ๏ธ.
* & ๐ ๐ ๐...
๐ ๐ซ, โช ๐ ๐ ๐.
## ๐ฅ ๐
โก๏ธ ๐ ๐ถ ๐
๐ผ. โซ๏ธ ๐ ๐
๐ โซ๏ธ ๐ซ ๐ถ โ , ๐.
โ๏ธ ๐ ๐ ๐ฅ ๐ช ๐ฏ ๐ โ **๐ ๐** โ๏ธ ๐ท.
### โ ๐, โ๏ธ "โ"
โก๏ธ ๐ฅ ๐ฏ ๐ ๐.
โซ๏ธ ๐ข ๐ ๐ช โ ๐ ๐ ๐ข ๐ *โก ๐ ๏ธ ๐ข* ๐ช โ:
//// tab | ๐ 3๏ธโฃ.6๏ธโฃ & ๐
```Python hl_lines="8-11"
{!> ../../../docs_src/dependencies/tutorial001.py!}
```
////
//// tab | ๐ 3๏ธโฃ.1๏ธโฃ0๏ธโฃ & ๐
```Python hl_lines="6-7"
{!> ../../../docs_src/dependencies/tutorial001_py310.py!}
```
////
๐ โซ๏ธ.
**2๏ธโฃ โธ**.
& โซ๏ธ โ๏ธ ๐ ๐ & ๐ ๐ ๐ ๐ *โก ๐ ๏ธ ๐ข* โ๏ธ.
๐ ๐ช ๐ญ โซ๏ธ *โก ๐ ๏ธ ๐ข* ๐ต "๐จโ๐จ" (๐ต `@app.get("/some-path")`).
& โซ๏ธ ๐ช ๐จ ๐ณ ๐ ๐.
๐ ๐ผ, ๐ ๐ โ:
* ๐ฆ ๐ข ๐ข `q` ๐ `str`.
* ๐ฆ ๐ข ๐ข `skip` ๐ `int`, & ๐ข `0`.
* ๐ฆ ๐ข ๐ข `limit` ๐ `int`, & ๐ข `100`.
& โคด๏ธ โซ๏ธ ๐จ `dict` โ ๐ ๐ฒ.
### ๐ `Depends`
//// tab | ๐ 3๏ธโฃ.6๏ธโฃ & ๐
```Python hl_lines="3"
{!> ../../../docs_src/dependencies/tutorial001.py!}
```
////
//// tab | ๐ 3๏ธโฃ.1๏ธโฃ0๏ธโฃ & ๐
```Python hl_lines="1"
{!> ../../../docs_src/dependencies/tutorial001_py310.py!}
```
////
### ๐ฃ ๐, "โ๏ธ"
๐ ๐ ๐ โ๏ธ `Body`, `Query`, โ๏ธ. โฎ๏ธ ๐ *โก ๐ ๏ธ ๐ข* ๐ข, โ๏ธ `Depends` โฎ๏ธ ๐ ๐ข:
//// tab | ๐ 3๏ธโฃ.6๏ธโฃ & ๐
```Python hl_lines="15 20"
{!> ../../../docs_src/dependencies/tutorial001.py!}
```
////
//// tab | ๐ 3๏ธโฃ.1๏ธโฃ0๏ธโฃ & ๐
```Python hl_lines="11 16"
{!> ../../../docs_src/dependencies/tutorial001_py310.py!}
```
////
๐ ๐ โ๏ธ `Depends` ๐ข ๐ ๐ข ๐ ๐ ๐ โ๏ธ `Body`, `Query`, โ๏ธ, `Depends` ๐ท ๐ ๐.
๐ ๐ด ๐ค `Depends` ๐ ๐ข.
๐ ๐ข ๐ ๐ณ ๐ ๐ข.
& ๐ ๐ข โ ๐ข ๐ ๐ ๐ *โก ๐ ๏ธ ๐ข* .
/// tip
๐ ๐ ๐ โซ๏ธโ ๐ "๐", โ๏ธ โช๏ธโก๏ธ ๐ข, ๐ช โ๏ธ ๐ โญ ๐.
///
๐โ ๐ ๐จ ๐ฌ, **FastAPI** ๐ โ ๐
:
* ๐ค ๐ ๐ ("โ") ๐ข โฎ๏ธ โ ๐ข.
* ๐ค ๐ โช๏ธโก๏ธ ๐ ๐ข.
* ๐ ๏ธ ๐ ๐ ๐ข ๐ *โก ๐ ๏ธ ๐ข*.
```mermaid
graph TB
common_parameters(["common_parameters"])
read_items["/items/"]
read_users["/users/"]
common_parameters --> read_items
common_parameters --> read_users
```
๐ ๐ ๐ โ ๐ ๐ ๐ & **FastAPI** โ ๐
๐ค โซ๏ธ ๐ *โก ๐ ๏ธ*.
/// check
๐ ๐ ๐ ๐ซ โ๏ธ โ ๐ ๐ & ๐ถโโ๏ธ โซ๏ธ ๐ฑ **FastAPI** "ยฎ" โซ๏ธ โ๏ธ ๐ณ ๐.
๐ ๐ถโโ๏ธ โซ๏ธ `Depends` & **FastAPI** ๐ญ โ ๐.
///
## `async` โ๏ธ ๐ซ `async`
๐ ๐ ๐ค **FastAPI** (๐ ๐ *โก ๐ ๏ธ ๐ข*), ๐ ๐ซ โ โช ๐ฌ ๐ ๐ข.
๐ ๐ช โ๏ธ `async def` โ๏ธ ๐ `def`.
& ๐ ๐ช ๐ฃ ๐ โฎ๏ธ `async def` ๐ ๐ `def` *โก ๐ ๏ธ ๐ข*, โ๏ธ `def` ๐ ๐ `async def` *โก ๐ ๏ธ ๐ข*, โ๏ธ.
โซ๏ธ ๐ซ ๐ค. **FastAPI** ๐ ๐ญ โซ๏ธโ.
/// note
๐ฅ ๐ ๐ซ ๐ญ, โ
[๐: *"๐ โ" *](../../async.md){.internal-link target=_blank} ๐ ๐ `async` & `await` ๐ฉบ.
///
## ๐ ๏ธ โฎ๏ธ ๐
๐ ๐จ ๐, ๐ฌ & ๐ ๐ ๐ (& ๐ง-๐) ๐ ๐ ๏ธ ๐ ๐ ๐.
, ๐ ๐ฉบ ๐ โ๏ธ ๐ โน โช๏ธโก๏ธ ๐ซ ๐ ๐โโ๏ธ:
## ๐
โ๏ธ
๐ฅ ๐ ๐ โซ๏ธ, *โก ๐ ๏ธ ๐ข* ๐ฃ โ๏ธ ๐โ *โก* & *๐ ๏ธ* ๐, & โคด๏ธ **FastAPI** โ ๐
๐ค ๐ข โฎ๏ธ โ ๐ข, โ ๐ โช๏ธโก๏ธ ๐จ.
๐ค, ๐ (โ๏ธ ๐) ๐ธ ๐ ๏ธ ๐ท ๐ ๐ ๐.
๐ ๐
๐ค ๐ ๐ข ๐. ๐ซ ๐ค ๐ ๐ ๏ธ (๐ ๐ผ, **FastAPI**).
โฎ๏ธ ๐ ๐ โ๏ธ, ๐ ๐ช ๐ฌ **FastAPI** ๐ ๐ *โก ๐ ๏ธ ๐ข* "๐ช" ๐ ๐ณ ๐ ๐ ๐ ๐ ๏ธ โญ ๐ *โก ๐ ๏ธ ๐ข*, & **FastAPI** ๐ โ ๐
๐ ๏ธ โซ๏ธ & "๐" ๐.
๐ โ โ ๐ ๐ ๐ญ "๐ ๐":
* โน
* ๐โ๐ฆบ
* ๐โ๐ฆบ
* ๐
* ๐ฆฒ
## **FastAPI** ๐-๐
๐ ๏ธ & "๐-"โ ๐ช ๐ โ๏ธ **๐ ๐** โ๏ธ. โ๏ธ ๐, ๐ค ๐ค **๐
โโ ๐ช โ "๐-๐"**, โ๏ธ ๐ โซ๏ธ ๐ช ๐ฃ โพ ๐ข ๐ ๏ธ & ๐ ๐ โถ๏ธ๏ธ ๐ช ๐ *โก ๐ ๏ธ ๐ข*.
& ๐ ๐ช โ ๐ถ ๐
& ๐๏ธ ๐ ๐ โ ๐ ๐ ๐ ๐ฆ ๐ ๐ช, & ๐ ๏ธ ๐ซ โฎ๏ธ ๐ ๐ ๏ธ ๐ข ๐ฉโโคโ๐จ โธ ๐, *๐*.
๐ ๐ ๐ ๐ผ ๐ โญ ๐, ๐ ๐ & โ ๐ฝ, ๐โโ, โ๏ธ.
## **FastAPI** ๐
๐ฆ ๐ ๐ โ๏ธ โ **FastAPI** ๐ โฎ๏ธ:
* ๐ ๐ ๐ฝ
* โ ๐ฝ
* ๐ข ๐ฆ
* ๐ข ๐
* ๐ค & โ โ๏ธ
* ๐ ๏ธ โ๏ธ โ โ๏ธ
* ๐จ ๐ฝ ๐ โ๏ธ
* โ๏ธ.
## ๐
& ๐๏ธ
๐ ๐ ๐ ๐ โ๏ธ ๐ถ ๐
๐ฌ & โ๏ธ, โซ๏ธ ๐ถ ๐๏ธ.
๐ ๐ช ๐ฌ ๐ ๐ ๐ ๐ช ๐ฌ ๐ ๐ซ.
๐, ๐ ๐ฒ ๐ ๐, & **๐ ๐** โ๏ธ โ ๐
๐ฌ ๐ ๐ ๐ ๐ (& ๐ซ ๐ง-๐) & ๐ (๐) ๐ ๐ ๐.
๐ผ, โก๏ธ ๐ฌ ๐ โ๏ธ 4๏ธโฃ ๐ ๏ธ ๐ (*โก ๐ ๏ธ*):
* `/items/public/`
* `/items/private/`
* `/users/{user_id}/activate`
* `/items/pro/`
โคด๏ธ ๐ ๐ช ๐ฎ ๐ โ ๐ ๐ ๐ซ โฎ๏ธ ๐ & ๐ง-๐:
```mermaid
graph TB
current_user(["current_user"])
active_user(["active_user"])
admin_user(["admin_user"])
paying_user(["paying_user"])
public["/items/public/"]
private["/items/private/"]
activate_user["/users/{user_id}/activate"]
pro_items["/items/pro/"]
current_user --> active_user
active_user --> admin_user
active_user --> paying_user
current_user --> public
active_user --> private
admin_user --> activate_user
paying_user --> pro_items
```
## ๐ ๏ธ โฎ๏ธ **๐**
๐ ๐ซ ๐, โช ๐ฃ ๐ซ ๐, ๐ฎ ๐ข, ๐ฌ, โ๏ธ. ๐ *โก ๐ ๏ธ*.
**FastAPI** ๐ โ ๐
๐ฎ โซ๏ธ ๐ ๐ ๐, ๐ โซ๏ธ ๐ฆ ๐ ๐งพ โ๏ธ.