๐ฅ ๐¶
๐ FastAPI ๐ ๐ช ๐ ๐ ๐:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
๐ ๐ ๐ main.py
.
๐ ๐ ๐ฝ:
$ uvicorn main:app --reload
<span style="color: green;">INFO</span>: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
<span style="color: green;">INFO</span>: Started reloader process [28720]
<span style="color: green;">INFO</span>: Started server process [28722]
<span style="color: green;">INFO</span>: Waiting for application startup.
<span style="color: green;">INFO</span>: Application startup complete.
Note
๐ uvicorn main:app
๐:
main
: ๐main.py
(๐ "๐น").app
: ๐ โ ๐main.py
โฎ๏ธ โธapp = FastAPI()
.--reload
: โ ๐ฝ โ โฎ๏ธ ๐ ๐. ๐ด โ๏ธ ๐ ๏ธ.
๐ข, ๐ค โธ โฎ๏ธ ๐ณ ๐:
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
๐ โธ ๐ฆ ๐ ๐โ ๐ ๐ฑ โ ๐ฆ, ๐ ๐ง๐ฟ ๐ฐ.
โ โซ๏ธ¶
๐ ๐ ๐ฅ http://127.0.0.1:8000.
๐ ๐ ๐ ๐ป ๐จ:
{"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.
โซ๏ธ ๐ ๐ฆ ๐ป โถ๏ธ โฎ๏ธ ๐ณ ๐:
{
"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
¶
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
FastAPI
๐ ๐ ๐ ๐ ๐ ๐ ๏ธ ๐ ๐ ๏ธ.
๐ก โน
FastAPI
๐ ๐ ๐ ๐ โช๏ธโก๏ธ Starlette
.
๐ ๐ช โ๏ธ ๐ ๐ ๐ ๏ธ โฎ๏ธ FastAPI
๐โโ๏ธ.
๐ 2๏ธโฃ: โ FastAPI
"๐"¶
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
๐ฅ app
๐ข ๐ "๐" ๐ FastAPI
.
๐ ๐ ๐ โ ๐ โ ๐ ๐ ๐ ๏ธ.
๐ app
๐ 1๏ธโฃ ๐ uvicorn
๐:
$ uvicorn main:app --reload
<span style="color: green;">INFO</span>: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
๐ฅ ๐ โ ๐ ๐ฑ ๐:
from fastapi import FastAPI
my_awesome_api = FastAPI()
@my_awesome_api.get("/")
async def root():
return {"message": "Hello World"}
& ๐ฎ โซ๏ธ ๐ main.py
, โคด๏ธ ๐ ๐ ๐ค uvicorn
๐:
$ uvicorn main:my_awesome_api --reload
<span style="color: green;">INFO</span>: 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
: โ ๐ฝ.
, ๐, ๐ ๐บ๐ธ๐ ๐ฉโ๐ฌ ๐ค "๐ ๏ธ".
๐ฅ ๐ ๐ค ๐ซ "๐ ๏ธ" ๐โโ๏ธ.
๐ฌ โก ๐ ๏ธ ๐จโ๐จ¶
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
@app.get("/")
๐ฌ FastAPI ๐ ๐ข โถ๏ธ๏ธ ๐ ๐ ๐ ๐จ ๐ ๐ถ:
- โก
/
- โ๏ธ
get
๐ ๏ธ
@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("/")
).
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
๐ ๐ ๐ข.
โซ๏ธ ๐ ๐ค FastAPI ๐โ โซ๏ธ ๐จ ๐จ ๐ "/
" โ๏ธ GET
๐ ๏ธ.
๐ ๐ผ, โซ๏ธ async
๐ข.
๐ ๐ช ๐ฌ โซ๏ธ ๐ ๐ข โฉ๏ธ async def
:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def root():
return {"message": "Hello World"}
Note
๐ฅ ๐ ๐ซ ๐ญ ๐บ, โ ๐: "๐ โ".
๐ 5๏ธโฃ: ๐จ ๐¶
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
๐ ๐ช ๐จ dict
, list
, โญ ๐ฒ str
, int
, โ๏ธ.
๐ ๐ช ๐จ Pydantic ๐ท (๐ ๐ ๐ ๐ ๐ ๐ โช).
๐ค ๐ ๐ ๐ & ๐ท ๐ ๐ ๐ ๐ ๐ป (๐ ๐, โ๏ธ). ๐ โ๏ธ ๐ ๐ ๐, โซ๏ธ ๐ ๐ฒ ๐ ๐ซ โช ๐โ๐ฆบ.
๐¶
- ๐
FastAPI
. - โ
app
๐. - โ โก ๐ ๏ธ ๐จโ๐จ (๐
@app.get("/")
). - โ โก ๐ ๏ธ ๐ข (๐
def root(): ...
๐). - ๐ ๐ ๏ธ ๐ฝ (๐
uvicorn main:app --reload
).