# ๐ฅ ๐
๐
FastAPI ๐ ๐ช ๐ ๐ ๐:
{* ../../docs_src/first_steps/tutorial001.py *}
๐ ๐ ๐ `main.py`.
๐ ๐ ๐ฝ:
```console
$ uvicorn main:app --reload
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [28720]
INFO: Started server process [28722]
INFO: Waiting for application startup.
INFO: Application startup complete.
```
/// note
๐ `uvicorn main:app` ๐:
* `main`: ๐ `main.py` (๐ "๐น").
* `app`: ๐ โ ๐ `main.py` โฎ๏ธ โธ `app = FastAPI()`.
* `--reload`: โ ๐ฝ โ โฎ๏ธ ๐ ๐. ๐ด โ๏ธ ๐ ๏ธ.
///
๐ข, ๐ค โธ โฎ๏ธ ๐ณ ๐:
```hl_lines="4"
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
```
๐ โธ ๐ฆ ๐ ๐โ ๐ ๐ฑ โ ๐ฆ, ๐ ๐ง๐ฟ ๐ฐ.
### โ
โซ๏ธ
๐ ๐ ๐ฅ http://127.0.0.1:8000.
๐ ๐ ๐ ๐ป ๐จ:
```JSON
{"message": "Hello World"}
```
### ๐ ๐ ๏ธ ๐ฉบ
๐ ๐ถ http://127.0.0.1:8000/docs.
๐ ๐ ๐ ๐ง ๐ ๐ ๏ธ ๐งพ (๐ ๐ฆ ๐):

### ๐ ๐ ๏ธ ๐ฉบ
& ๐, ๐ถ http://127.0.0.1:8000/redoc.
๐ ๐ ๐ ๐ ๐ง ๐งพ (๐ ๐):

### ๐
**FastAPI** ๐ "๐" โฎ๏ธ ๐ ๐ ๐ ๏ธ โ๏ธ **๐** ๐ฉ โ ๐.
#### "๐"
"๐" ๐ โ๏ธ ๐ ๐ณ. ๐ซ ๐ ๐ ๐ ๏ธ โซ๏ธ, โ๏ธ ๐ ๐.
#### ๐ ๏ธ "๐"
๐ ๐ผ, ๐ ๐ง ๐ ๐ค โ ๐ฌ ๐ ๐ ๐ ๏ธ.
๐ ๐ ๐ ๐ ๐ ๐ ๏ธ โก, ๐ช ๐ข ๐ซ โ, โ๏ธ.
#### ๐ฝ "๐"
โ "๐" ๐ช ๐ ๐ ๐ฝ, ๐ ๐ป ๐.
๐ ๐ผ, โซ๏ธ ๐ โ ๐ป ๐ข, & ๐ ๐ ๐ซ โ๏ธ, โ๏ธ.
#### ๐ & ๐ป ๐
๐ ๐ฌ ๐ ๏ธ ๐ ๐ ๐ ๏ธ. & ๐ ๐ ๐ ๐ (โ๏ธ "๐") ๐ ๐จ & ๐จ ๐ ๐ ๏ธ โ๏ธ **๐ป ๐**, ๐ฉ ๐ป ๐ ๐.
#### โ
`openapi.json`
๐ฅ ๐ ๐ ๐ โ ๐ฃ ๐ ๐ ๐ ๐, FastAPI ๐ ๐ ๐ป (๐) โฎ๏ธ ๐ ๐ ๐ ๐ ๏ธ.
๐ ๐ช ๐ โซ๏ธ ๐: http://127.0.0.1:8000/openapi.json.
โซ๏ธ ๐ ๐ฆ ๐ป โถ๏ธ โฎ๏ธ ๐ณ ๐:
```JSON
{
"openapi": "3.0.2",
"info": {
"title": "FastAPI",
"version": "0.1.0"
},
"paths": {
"/items/": {
"get": {
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
...
```
#### โซ๏ธโ ๐
๐ ๐ โซ๏ธโ ๐๏ธ 2๏ธโฃ ๐ ๐งพ โ๏ธ ๐.
& ๐ค ๐ฏ ๐, ๐ โ๏ธ ๐ ๐. ๐ ๐ช ๐ช ๐ฎ ๐ ๐ ๐ ๐ ๐ธ ๐ โฎ๏ธ **FastAPI**.
๐ ๐ช โ๏ธ โซ๏ธ ๐ ๐ ๐, ๐ฉโ๐ป ๐ ๐ โฎ๏ธ ๐ ๐ ๏ธ. ๐ผ, ๐ธ, ๐ฑ โ๏ธ โ ๐ธ.
## ๐, ๐ ๐
### ๐ 1๏ธโฃ: ๐ `FastAPI`
{* ../../docs_src/first_steps/tutorial001.py hl[1] *}
`FastAPI` ๐ ๐ ๐ ๐ ๐ ๐ ๏ธ ๐ ๐ ๏ธ.
/// note | ๐ก โน
`FastAPI` ๐ ๐ ๐ ๐ โช๏ธโก๏ธ `Starlette`.
๐ ๐ช โ๏ธ ๐ ๐ ๐ ๏ธ โฎ๏ธ `FastAPI` ๐โโ๏ธ.
///
### ๐ 2๏ธโฃ: โ `FastAPI` "๐"
{* ../../docs_src/first_steps/tutorial001.py hl[3] *}
๐ฅ `app` ๐ข ๐ "๐" ๐ `FastAPI`.
๐ ๐ ๐ โ ๐ โ ๐ ๐ ๐ ๏ธ.
๐ `app` ๐ 1๏ธโฃ ๐ `uvicorn` ๐:
```console
$ uvicorn main:app --reload
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
```
๐ฅ ๐ โ ๐ ๐ฑ ๐:
{* ../../docs_src/first_steps/tutorial002.py hl[3] *}
& ๐ฎ โซ๏ธ ๐ `main.py`, โคด๏ธ ๐ ๐ ๐ค `uvicorn` ๐:
```console
$ uvicorn main:my_awesome_api --reload
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
```
### ๐ 3๏ธโฃ: โ *โก ๐ ๏ธ*
#### โก
"โก" ๐ฅ ๐ ๐ ๐ ๐ โถ๏ธ โช๏ธโก๏ธ ๐ฅ `/`.
, ๐ ๐:
```
https://example.com/items/foo
```
...โก ๐:
```
/items/foo
```
/// info
"โก" ๐ ๐ค "๐" โ๏ธ "๐ฃ".
///
โช ๐ ๐ ๏ธ, "โก" ๐ ๐ ๐ "โ " & "โน".
#### ๐ ๏ธ
"๐ ๏ธ" ๐ฅ ๐ 1๏ธโฃ ๐บ๐ธ๐ "๐ฉโ๐ฌ".
1๏ธโฃ:
* `POST`
* `GET`
* `PUT`
* `DELETE`
...& ๐
๐ ๐:
* `OPTIONS`
* `HEAD`
* `PATCH`
* `TRACE`
๐บ๐ธ๐ ๐ ๏ธ, ๐ ๐ช ๐ ๐ โก โ๏ธ 1๏ธโฃ (โ๏ธ ๐
) ๐ซ "๐ฉโ๐ฌ".
---
๐โ ๐ ๐, ๐ ๐ โ๏ธ ๐ซ ๐ฏ ๐บ๐ธ๐ ๐ฉโ๐ฌ ๐ญ ๐ฏ ๐ฏ.
๐ ๐ โ๏ธ:
* `POST`: โ ๐ฝ.
* `GET`: โ ๐ฝ.
* `PUT`: โน ๐ฝ.
* `DELETE`: โ ๐ฝ.
, ๐, ๐ ๐บ๐ธ๐ ๐ฉโ๐ฌ ๐ค "๐ ๏ธ".
๐ฅ ๐ ๐ค ๐ซ "**๐ ๏ธ**" ๐โโ๏ธ.
#### ๐ฌ *โก ๐ ๏ธ ๐จโ๐จ*
{* ../../docs_src/first_steps/tutorial001.py hl[6] *}
`@app.get("/")` ๐ฌ **FastAPI** ๐ ๐ข โถ๏ธ๏ธ ๐ ๐ ๐ ๐จ ๐ ๐ถ:
* โก `/`
* โ๏ธ get ๐ ๏ธ
/// info | `@decorator` โน
๐ `@something` โ ๐ ๐ค "๐จโ๐จ".
๐ ๐ฎ โซ๏ธ ๐ ๐ ๐ข. ๐ ๐ถ ๐ ๐ (๐ค ๐ญ ๐ ๐โ โ ๐ โช๏ธโก๏ธ).
"๐จโ๐จ" โ ๐ข ๐ & ๐จ ๐ณ โฎ๏ธ โซ๏ธ.
๐ ๐ผ, ๐ ๐จโ๐จ ๐ฌ **FastAPI** ๐ ๐ข ๐ ๐ **โก** `/` โฎ๏ธ **๐ ๏ธ** `get`.
โซ๏ธ "**โก ๐ ๏ธ ๐จโ๐จ**".
///
๐ ๐ช โ๏ธ ๐ ๐ ๏ธ:
* `@app.post()`
* `@app.put()`
* `@app.delete()`
& ๐
๐ ๐:
* `@app.options()`
* `@app.head()`
* `@app.patch()`
* `@app.trace()`
/// tip
๐ ๐ โ๏ธ ๐ ๐ ๏ธ (๐บ๐ธ๐ ๐ฉโ๐ฌ) ๐ ๐.
**FastAPI** ๐ซ ๐ ๏ธ ๐ ๐ฏ ๐.
โน ๐ฅ ๐ ๐, ๐ซ ๐.
๐ผ, ๐โ โ๏ธ ๐น ๐ ๐ ๐ญ ๐ ๐ฏ โ๏ธ ๐ด `POST` ๐ ๏ธ.
///
### ๐ 4๏ธโฃ: ๐ฌ **โก ๐ ๏ธ ๐ข**
๐ ๐ "**โก ๐ ๏ธ ๐ข**":
* **โก**: `/`.
* **๐ ๏ธ**: `get`.
* **๐ข**: ๐ข ๐ "๐จโ๐จ" (๐ `@app.get("/")`).
{* ../../docs_src/first_steps/tutorial001.py hl[7] *}
๐ ๐ ๐ข.
โซ๏ธ ๐ ๐ค **FastAPI** ๐โ โซ๏ธ ๐จ ๐จ ๐ "`/`" โ๏ธ `GET` ๐ ๏ธ.
๐ ๐ผ, โซ๏ธ `async` ๐ข.
---
๐ ๐ช ๐ฌ โซ๏ธ ๐ ๐ข โฉ๏ธ `async def`:
{* ../../docs_src/first_steps/tutorial003.py hl[7] *}
/// note
๐ฅ ๐ ๐ซ ๐ญ ๐บ, โ
[๐: *"๐ โ"*](../async.md#_2){.internal-link target=_blank}.
///
### ๐ 5๏ธโฃ: ๐จ ๐
{* ../../docs_src/first_steps/tutorial001.py hl[8] *}
๐ ๐ช ๐จ `dict`, `list`, โญ ๐ฒ `str`, `int`, โ๏ธ.
๐ ๐ช ๐จ Pydantic ๐ท (๐ ๐ ๐ ๐
๐ ๐ โช).
๐ค ๐ ๐ ๐ & ๐ท ๐ ๐ ๐ ๐ ๐ป (๐ ๐, โ๏ธ). ๐ โ๏ธ ๐ ๐ ๐, โซ๏ธ ๐ ๐ฒ ๐ ๐ซ โช ๐โ๐ฆบ.
## ๐
* ๐ `FastAPI`.
* โ `app` ๐.
* โ **โก ๐ ๏ธ ๐จโ๐จ** (๐ `@app.get("/")`).
* โ **โก ๐ ๏ธ ๐ข** (๐ `def root(): ...` ๐).
* ๐ ๐ ๏ธ ๐ฝ (๐ `uvicorn main:app --reload`).