30 KiB
FastAPI āĻāĻā§āĻāĻā§āώāĻŽāϤāĻž āϏāĻŽā§āĻĒāύā§āύ, āϏāĻšāĻā§ āĻļā§āĻāĻžāϰ āĻāĻŦāĻ āĻĻā§āϰā§āϤ āĻā§āĻĄ āĻāϰ⧠āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύā§āϰ āĻāύā§āϝ āĻĢā§āϰāĻžāĻŽāĻā§āĻžāϰā§āĻāĨ¤
āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž āύāĻĨāĻŋ: https://fastapi.tiangolo.com
āϏā§āϰā§āϏ āĻā§āĻĄ: https://github.com/fastapi/fastapi
FastAPI āĻāĻāĻāĻŋ āĻāϧā§āύāĻŋāĻ, āĻĻā§āϰā§āϤ ( āĻŦā§āĻļāĻŋ āĻā§āώāĻŽāϤāĻž ) āϏāĻŽā§āĻĒāύā§āύ, Python 3.6+ āĻĻāĻŋā§ā§ API āϤā§āϰāĻŋāϰ āĻāύā§āϝ āϏā§āĻā§āϝāĻžāύā§āĻĄāĻžāϰā§āĻĄ āĻĒāĻžāĻāĻĨāύ āĻāĻžāĻāĻĒ āĻāĻā§āĻāĻŋāϤ āĻāĻŋāϤā§āϤāĻŋāĻ āĻāϝāĻŧā§āĻŦ āĻĢā§āϰā§āĻŽāĻāϝāĻŧāĻžāϰā§āĻāĨ¤
āĻāϰ āĻŽā§āϞ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ āĻā§āϞ⧠āĻšāϞāĻ
-
āĻāϤāĻŋ: āĻāĻāĻŋ NodeJS āĻāĻŦāĻ Go āĻāϰ āĻŽāϤ āĻāĻžāϰā§āϝāĻā§āώāĻŽāϤāĻž āϏāĻŽā§āĻĒāύā§āύ (Starlette āĻāĻŦāĻ Pydantic āĻāϰ āϏāĻžāĻšāĻžāϝā§āϝā§)āĨ¤ āĻĒāĻžāĻāĻĨāύ āĻāϰ āĻĻā§āϰā§āϤāϤāĻŽ āĻĢā§āϰā§āĻŽāĻāϝāĻŧāĻžāϰā§āĻ āĻā§āϞā§āϰ āĻŽāϧā§āϝ⧠āĻāĻāĻŋ āĻāĻāĻāĻŋāĨ¤
-
āĻĻā§āϰā§āϤ āĻā§āĻĄ āĻāϰāĻž:āĻŦā§āĻļāĻŋāώā§āĻā§āϝ āϤā§āϰāĻŋāϰ āĻāϤāĻŋ ⧍ā§Ļā§Ļ% āĻĨā§āĻā§ ā§Šā§Ļā§Ļ% āĻŦā§āĻĻā§āϧāĻŋ āĻāϰā§ā§ˇ *
-
āϏā§āĻŦāϞā§āĻĒ bugs: āĻŽāĻžāύā§āĻŦ (āĻĄā§āĻā§āϞāĻĒāĻžāϰ) āϏā§āώā§āĻ āϤā§āϰā§āĻāĻŋāϰ āĻĒā§āϰāĻžāϝāĻŧ ā§Ēā§Ļ% āĻšā§āϰāĻžāϏ āĻāϰā§āĨ¤ *
-
āϏā§āĻŦāĻā§āĻāĻžāϤ: āĻĻā§āϰā§āĻĻāĻžāύā§āϤ āĻāĻĄāĻŋāĻāϰ āϏāĻžāĻšāĻžāϝā§āϝ Completion āύāĻžāĻŽā§āĻ āĻĒāϰāĻŋāĻāĻŋāϤāĨ¤ āĻĻā§āϰā§āϤ āĻĄāĻŋāĻŦāĻžāĻ āĻāϰāĻž āϝāĻžā§āĨ¤
-
āϏāĻšāĻ: āĻāĻāĻŋ āĻāĻŽāύ āĻāĻžāĻŦā§ āϏāĻāĻžāύ⧠āĻšā§ā§āĻā§ āϝā§āύ āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž āύāĻĨāĻŋ āĻĒā§ā§ āϏāĻšāĻā§ āĻļā§āĻāĻž āĻāĻŦāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝāĻžā§āĨ¤
-
āϏāĻāĻā§āώāĻŋāĻĒā§āϤ: āĻā§āĻĄ āĻĒā§āύāϰāĻžāĻŦā§āϤā§āϤāĻŋ āĻāĻŽāĻžāύā§āϰ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ, bug āĻāĻŽāĻžā§ āĻāĻŦāĻ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻā§āώāĻŖāĻž āĻĨā§āĻā§ āĻāĻāĻžāϧāĻŋāĻ āĻĢāĻŋāĻāĻžāϰ āĻĒāĻžāĻā§āĻž āϝāĻžā§ āĨ¤
-
āĻā§āϰāĻžāϞā§: āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ āĻāĻžāĻŦā§ āϤā§āϰāĻŋ āĻā§āϰāĻŋā§āĻžāĻļā§āϞ āύāĻŋāϰā§āĻĻā§āĻļāύāĻž āύāĻĨāĻŋ (documentation) āϏāĻš āĻā§āĻĒāĻžāĻĻāύ āĻāĻĒāϝā§āĻāĻŋ (Production-ready) āĻā§āĻĄ āĻĒāĻžāĻā§āĻž āϝāĻžā§āĨ¤
-
āĻŽāĻžāύ-āĻāĻŋāϤā§āϤāĻŋāĻ: āĻāϰ āĻāĻŋāϤā§āϤāĻŋ OpenAPI (āϝāĻž āĻĒā§āϰā§āĻŦā§ Swagger āύāĻžāĻŽā§ āĻĒāϰāĻŋāĻāĻŋāϤ āĻāĻŋāϞ) āĻāĻŦāĻ JSON Schema āĻāϰ āĻāĻĻāϰā§āĻļā§āϰ āĻŽāĻžāύā§āϰ āĻāĻĒāϰ
* āĻā§āĻĒāĻžāĻĻāύāĻŽā§āĻāĻŋ āĻāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻŦāĻžāύāĻžāύā§āϰ āĻāĻ āĻĻāϞ āĻĄā§āĻā§āϞāĻĒāĻžāϰ āĻāϰ āĻŽāϤāĻžāĻŽāϤ āĻāĻŋāϤā§āϤāĻŋāĻ āĻĢāϞāĻžāĻĢāϞāĨ¤
āϏā§āĻĒāύāϏāϰ āĻāĻŖ
{% if sponsors %}
{% for sponsor in sponsors.gold -%}
{% endfor -%}
{%- for sponsor in sponsors.silver -%}
{% endfor %}
{% endif %}
āĻ āύā§āϝāĻžāύā§āϝ āϏā§āĻĒāύāϏāϰ āĻāĻŖ
āĻŽāϤāĻžāĻŽāϤ āϏāĻŽā§āĻš
"āĻāĻŽāĻŋ āĻāĻāĻāĻžāϞ FastAPI āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻāĻŋāĨ¤ [...] āĻāĻŽāϰāĻž āĻāĻžāĻŦāĻāĻŋ āĻŽāĻžāĻāĻā§āϰā§āϏāĻĢā§āĻā§ ML āϏāĻžāϰā§āĻāĻŋāϏ āĻ āϏāĻāϞ āĻĻāϞā§āϰ āĻāύā§āϝ āĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦāĨ¤ āϝāĻžāϰ āĻŽāϧā§āϝ⧠āĻāĻŋāĻā§ āĻĒāĻŖā§āϝ Windows āĻ āϏāĻāϝā§āϝāύ āĻšā§ āĻāĻŦāĻ āĻāĻŋāĻā§ Office āĻāϰ āϏāĻžāĻĨā§ āϏāĻāϝā§āϝāύ āĻšāĻā§āĻā§āĨ¤"
"āĻāĻŽāϰāĻž FastAPI āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ āĻā§āϰāĻšāĻŖ āĻāϰā§āĻāĻŋ āĻāĻāĻāĻŋ REST āϏāĻžāϰā§āĻāĻžāϰ āϤā§āϰāĻŋ āĻāϰāϤā§, āϝāĻž āĻāĻŦāĻŋāώā§āϝāĻĻā§āĻŦāĻžāĻŖā§ āĻĒāĻžāĻāϝāĻŧāĻžāϰ āĻāύā§āϝ āĻā§ā§ā§āϰāĻŋ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤ [āϞā§āĻĄāĻāĻāĻā§āϰ āĻāύā§āϝ]"
"Netflix āĻāĻŽāĻžāĻĻā§āϰ āĻā§āϰāĻžāĻāϏāĻŋāϏ āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻ āĻ āϰā§āĻā§āϏā§āĻā§āϰā§āĻļāύ āĻĢā§āϰā§āĻŽāĻāϝāĻŧāĻžāϰā§āĻ: āĻĄāĻŋāϏāĻĒā§āϝāĻžāĻ āĻāϰ āĻāĻĒā§āύ āϏā§āϰā§āϏ āϰāĻŋāϞāĻŋāĻ āĻā§āώāĻŖāĻž āĻāϰāϤ⧠āĻĒā§āϰ⧠āĻāύāύā§āĻĻāĻŋāϤ! [āϝāĻžāĻāĻŋāύāĻž FastAPI āĻĻāĻŋāϝāĻŧā§ āύāĻŋāϰā§āĻŽāĻŋāϤ]"
"āĻāĻŽāĻŋ FastAPI āύāĻŋāϝāĻŧā§ āĻāĻžāĻāĻĻā§āϰ āϏāĻŽāĻžāύ āĻā§āϏāĻžāĻšāĻŋāϤāĨ¤ āĻāĻāĻŋ āĻā§āĻŦāĻ āĻŽāĻāĻžāϰ!"
"_āϏāϤā§āϝāĻŋāĻ, āĻāĻĒāύāĻŋ āϝāĻž āϤā§āϰāĻŋ āĻāϰā§āĻā§āύ āϤāĻž āĻā§āĻŦ āĻŽāĻāĻŦā§āϤ āĻāĻŦāĻ āĻĒāϰāĻŋāĻĒā§āϰā§āύ⧎ āĻ āύā§āĻ āĻāĻĒāĻžāϝāĻŧā§, āĻāĻŽāĻŋ āϝāĻž Hug āĻ āĻāϰāϤ⧠āĻā§ā§ā§āĻāĻŋāϞāĻžāĻŽ - āϤāĻž āĻāĻžāĻāĻā§ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻĻā§āĻā§ āĻāĻŽāĻŋ āϏāϤā§āϝāĻŋāĻ āĻ āύā§āĻĒā§āϰāĻžāύāĻŋāϤ⧎_"
"āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ REST API āϤā§āϰāĻŋāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻāϧā§āύāĻŋāĻ āĻĢā§āϰā§āĻŽāĻā§āĻžāϰā§āĻ āĻļāĻŋāĻāϤ⧠āĻāĻžāύ, āϤāĻžāĻšāϞ⧠FastAPI āĻĻā§āĻā§āύ [...] āĻāĻāĻŋ āĻĻā§āϰā§āϤ, āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϏāĻšāĻ āĻāĻŦāĻ āĻļāĻŋāĻāϤā§āĻ āϏāĻšāĻ [...]_"
"āĻāĻŽāϰāĻž āĻāĻŽāĻžāĻĻā§āϰ APIs [...] āĻāϰ āĻāύā§āϝ FastAPI- āϤ⧠āĻāϏā§āĻāĻŋ [...] āĻāĻŽāĻŋ āĻŽāύ⧠āĻāϰāĻŋ āĻāĻĒāύāĻŋāĻ āĻāĻāĻŋ āĻĒāĻāύā§āĻĻ āĻāϰāĻŦā§āύ [...]"
Typer, CLI āĻāϰ āĻāύā§āϝ FastAPI
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ CLI āĻ ā§āϝāĻžāĻĒ āĻŦāĻžāύāĻžāϤ⧠āĻāĻžāύ, āϝāĻž āĻāĻŋāύāĻž āĻā§ā§āĻŦ API āĻāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤ⧠āĻāĻžāϰā§āĻŽāĻŋāύāĻžāϞ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšāĻŦā§, āϤāĻžāĻšāϞ⧠āĻĻā§āĻā§āύTyper.
āĻāĻžāĻāĻĒāĻžāϰ āĻšāϞ FastAPI āĻāϰ āĻā§āĻ āĻāĻžāĻā§ā§āϰ āĻŽāϤāĨ¤ āĻāĻŦāĻ āĻāĻāĻŋāϰ āĻāĻĻā§āĻĻā§āĻļā§āϝ āĻāĻŋāϞ CLIs āĻāϰ FastAPI āĻšāĻā§āĻžāĨ¤ â¨ī¸ đ
āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧāϤāĻž āĻā§āϞā§
Python 3.7+
FastAPI āĻāĻŋāĻā§ āĻĻāĻžāύāĻŦā§āĻĻā§āϰ āĻāĻžāĻāϧ⧠āĻĻāĻžāĻāĻĄāĻŧāĻŋāϝāĻŧā§ āĻāĻā§:
- Starlette āĻāϝāĻŧā§āĻŦ āĻ āĻāĻļā§āϰ āĻāύā§āϝ.
- Pydantic āĻĄā§āĻāĻž āĻ āĻāĻļāĻā§āϞāĻŋāϰ āĻāύā§āϝ.
āĻāύāϏā§āĻāϞā§āĻļāύ āĻĒā§āϰāĻā§āϰāĻŋā§āĻž
$ pip install fastapi
---> 100%
āĻāĻĒāύāĻžāϰ āĻāĻāĻāĻŋ ASGI āϏāĻžāϰā§āĻāĻžāϰā§āϰāĻ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻšāĻŦā§, āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύā§āϰ āĻāύā§āϝ Uvicorn āĻ āĻĨāĻŦāĻž Hypercorn.
$ pip install "uvicorn[standard]"
---> 100%
āĻāĻĻāĻžāĻšāϰāĻŖ
āϤā§āϰāĻŋ
main.pyāύāĻžāĻŽā§ āĻāĻāĻāĻŋ āĻĢāĻžāĻāϞ āϤā§āϰāĻŋ āĻāϰā§āύ:
from typing import Union
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
return {"item_id": item_id, "q": q}
āĻ
āĻĨāĻŦāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ async def...
āϝāĻĻāĻŋ āĻāĻĒāύāĻžāϰ āĻā§āĻĄ async / await, āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϤāĻžāĻšāϞ⧠async def āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ:
from typing import Union
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
async def read_item(item_id: int, q: Union[str, None] = None):
return {"item_id": item_id, "q": q}
āĻā§āĻāĻž:
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āύāĻž āĻāĻžāύā§āύ, "āϤāĻžāĻĄāĻŧāĻžāĻšā§āĻĄāĻŧā§?" āĻŦāĻŋāĻāĻžāĻāĻāĻŋ āĻĻā§āĻā§āύ async āĻāĻŦāĻ await āύāĻĨāĻŋāϰ āĻŽāϧā§āϝ⧠āĻĻā§āĻā§āύ .
āĻāĻāĻŋ āĻāĻžāϞāĻžāύ
āϏāĻžāϰā§āĻāĻžāϰ āĻāĻžāϞ⧠āĻāϰā§āύ:
$ 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.
āύāĻŋāϰā§āĻĻā§āĻļāύāĻž āϏāĻŽā§āĻĒāϰā§āĻā§ uvicorn main:app --reload...
uvicorn main:app āύāĻŋāϰā§āĻĻā§āĻļāύāĻžāĻāĻŋ āĻĻā§āĻŦāĻžāϰāĻž āĻŦā§āĻāĻžāϝāĻŧ:
main: āĻĢāĻžāĻāϞmain.py(āĻĒāĻžāĻāĻĨāύ "āĻŽāĻĄāĻŋāĻāϞ")āĨ¤app:app = FastAPI()āϞāĻžāĻāύ āĻĻāĻŋāϝāĻŧā§main.pyāĻāϰ āĻāĻŋāϤāϰ⧠āϤā§āϰāĻŋ āĻāϰāĻž āĻ āĻŦāĻā§āĻā§āĻāĨ¤--reload: āĻā§āĻĄ āĻĒāϰāĻŋāĻŦāϰā§āϤāύā§āϰ āĻĒāϰ⧠āϏāĻžāϰā§āĻāĻžāϰ āĻĒā§āύāϰāĻžāϝāĻŧ āĻāĻžāϞ⧠āĻāϰā§āύāĨ¤ āĻāĻāĻŋ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻĄā§āĻā§āϞāĻĒāĻŽā§āύā§āĻ āĻāϰ āϏāĻŽā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤
āĻāĻāĻž āĻā§āĻ āĻāϰā§āύ
āĻāĻĒāύāĻžāϰ āĻŦā§āϰāĻžāĻāĻāĻžāϰ āĻā§āϞā§āύ http://127.0.0.1:8000/items/5?q=somequery āĻāĨ¤
āĻāĻĒāύāĻŋ JSON āϰā§āϏāĻĒāύā§āϏ āĻĻā§āĻāϤ⧠āĻĒāĻžāĻŦā§āύ:
{"item_id": 5, "q": "somequery"}
āĻāĻĒāύāĻŋ āĻāϤāĻŋāĻŽāϧā§āϝ⧠āĻāĻāĻāĻŋ API āϤā§āϰāĻŋ āĻāϰā§āĻā§āύ āϝāĻž:
/āĻāĻŦāĻ/items/{item_id}paths āĻ HTTP āĻ āύā§āϰā§āϧ āĻā§āϰāĻšāĻŖ āĻāϰā§āĨ¤- āĻāĻāϝāĻŧ pathāĻ
GETāĻ āĻĒāĻžāϰā§āĻļāύ āύā§āϝāĻŧ ( āϝāĻž HTTP methods āύāĻžāĻŽā§āĻ āĻĒāϰāĻŋāĻāĻŋāϤ)āĨ¤ - path
/items/{item_id}-āĻ āĻāĻāĻāĻŋ path āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰitem_idāĻāĻā§ āϝāĻž āĻāĻŋāύāĻžintāĻšāϤ⧠āĻšāĻŦā§āĨ¤ - path
/items/{item_id}-āĻāϰ āĻāĻāĻāĻŋ āĻāĻā§āĻāĻŋāĻstrquery āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰqāĻāĻā§āĨ¤
āĻā§āϰāĻŋā§āĻžāĻļā§āϞ API āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž āύāĻĨāĻŋ
āĻāĻāύ āϝāĻžāύ http://127.0.0.1:8000/docs.
āĻāĻĒāύāĻŋ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ āĻāĻžāĻŦā§ āĻĒā§āϰāϏā§āϤā§āϤ āĻā§āϰāĻŋā§āĻžāĻļā§āϞ API āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž āύāĻĨāĻŋ āĻĻā§āĻāϤ⧠āĻĒāĻžāĻŦā§āύ (Swagger UI āĻĒā§āϰāĻĻāϤā§āϤ):
āĻŦāĻŋāĻāϞā§āĻĒ API āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž āύāĻĨāĻŋ
āĻāĻŦāĻ āĻāĻāύ http://127.0.0.1:8000/redoc āĻ āϝāĻžāύ.
āĻāĻĒāύāĻŋ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ āĻāĻžāĻŦā§ āĻĒā§āϰāϏā§āϤā§āϤ āĻŦāĻŋāĻāϞā§āĻĒ āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž āύāĻĨāĻŋ āĻĻā§āĻāϤ⧠āĻĒāĻžāĻŦā§āύ (ReDoc āĻĒā§āϰāĻĻāϤā§āϤ):
āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ āĻāĻĒāĻā§āϰā§āĻĄ
āĻāĻāύ main.py āĻĢāĻžāĻāϞāĻāĻŋ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰā§āύ āϝā§āύ āĻāĻāĻŋ PUT āϰāĻŋāĻā§ā§ā§āϏā§āĻ āĻĨā§āĻā§ āĻŦāĻĄāĻŋ āĻĒā§āϤ⧠āĻĒāĻžāϰā§āĨ¤
Python āϏā§āĻā§āϝāĻžāύā§āĻĄāĻžāϰā§āĻĄ āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ, Pydantic āĻāϰ āϏāĻžāĻšāĻžāϝā§āϝ⧠āĻŦāĻĄāĻŋ āĻā§āώāĻŖāĻž āĻāϰā§āύāĨ¤
from typing import Union
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: float
is_offer: Union[bool, None] = None
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
return {"item_id": item_id, "q": q}
@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
return {"item_name": item.name, "item_id": item_id}
āϏāĻžāϰā§āĻāĻžāϰāĻāĻŋ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻĒā§āύāϰāĻžāϝāĻŧ āϞā§āĻĄ āĻšāĻāϝāĻŧāĻž āĻāĻāĻŋāϤ (āĻāĻžāϰāĻŖ āĻāĻĒāύāĻŋ āĻāĻĒāϰā§āϰ uvicorn āĻāĻŽāĻžāύā§āĻĄā§ --reload āϝā§āĻ āĻāϰā§āĻā§āύ)āĨ¤
āĻā§āϰāĻŋā§āĻžāĻļā§āϞ API āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž āύāĻĨāĻŋ āĻāύā§āύā§āϤāĻāϰāĻŖ
āĻāĻāύ http://127.0.0.1:8000/docs āĻāĻĄāĻĄā§āϰā§āϏ⧠āϝāĻžāύ.
- āĻā§āϰāĻŋā§āĻžāĻļā§āϞ API āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž āύāĻĨāĻŋāĻāĻŋ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻāύā§āύā§āϤ āĻšāϝ⧠āϝāĻžāĻŦā§, āύāϤā§āύ āĻŦāĻĄāĻŋ āϏāĻš:
- "Try it out" āĻŦāĻžāĻāύ⧠āĻāĻžāĻĒā§āύ, āĻāĻāĻŋ āĻāĻĒāύāĻžāĻā§ āĻĒā§āϰāĻžāĻŽāĻŋāĻāĻžāϰāĻā§āϞ⧠āĻĒā§āϰāĻŖ āĻāϰāϤ⧠āĻāĻŦāĻ API āĻāϰ āϏāĻžāĻĨā§ āϏāϰāĻžāϏāϰāĻŋ āĻā§āϰāĻŋā§āĻž-āĻāϞāĻžāĻĒ āĻāϰāϤ⧠āĻĻāĻŋāĻŦā§:
- āϤāĻžāϰāĻĒāϰ⧠"Execute" āĻŦāĻžāĻāύ⧠āĻāĻžāĻĒā§āύ, āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāύā§āĻāĻžāϰāĻĢā§āϏ āĻāĻĒāύāĻžāϰ API āĻāϰ āϏāĻžāĻĨā§ āϝā§āĻāĻžāϝā§āĻ āĻāϰāĻŦā§, āĻĒā§āϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻĒāĻžāĻ āĻžāĻŦā§, āĻĢāϞāĻžāĻĢāϞāĻā§āϞāĻŋ āĻĒāĻžāĻŦā§ āĻāĻŦāĻ āϏā§āĻā§āϞāĻŋ āĻĒāϰā§āϰāĻĻāĻžā§ āĻĻā§āĻāĻžāĻŦā§:
āĻŦāĻŋāĻāϞā§āĻĒ API āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž āύāĻĨāĻŋ āĻāĻĒāĻā§āϰā§āĻĄ
āĻāĻŦāĻ āĻāĻāύ http://127.0.0.1:8000/redoc āĻ āϝāĻžāύāĨ¤
- āĻŦāĻŋāĻāϞā§āĻĒ āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž āύāĻĨāĻŋāϤā§āĻ āύāϤā§āύ āĻā§ā§ā§āϰāĻŋ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻāĻŦāĻ āĻŦāĻĄāĻŋ āĻĒā§āϰāϤāĻŋāĻĢāϞāĻŋāϤ āĻšāĻŦā§:
āϏāĻāĻā§āώāĻŋāĻĒā§āϤāĻāϰāĻŖ
āϏāĻāĻā§āώā§āĻĒā§, āĻāĻĒāύāĻŋ āĻļā§āϧ⧠āĻāĻāĻŦāĻžāϰ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰā§āϰ āϧāϰāύ, āĻŦāĻĄāĻŋ āĻāϤā§āϝāĻžāĻĻāĻŋ āĻĢāĻžāĻāĻļāύ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻšāĻŋāϏā§āĻŦā§ āĻā§āώāĻŖāĻž āĻāϰā§āύāĨ¤
āĻāĻĒāύāĻŋ āϏā§āĻāĻŋ āĻāϧā§āύāĻŋāĻ āĻĒāĻžāĻāĻĨāύā§āϰ āϏāĻžāĻĨā§ āĻāϰā§āύāĨ¤
āĻāĻĒāύāĻžāĻā§ āύāϤā§āύ āĻāϰ⧠āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻā§āύ āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋāϰ āĻŦāĻžāĻā§āϝ āĻāĻ āύ, āĻĢāĻžāĻāĻļāύ āĻŦāĻž āĻā§āϞāĻžāϏ āĻāĻŋāĻā§āĻ āĻļāĻŋāĻāϤ⧠āĻšāĻā§āĻā§ āύāĻžāĨ¤
āĻļā§āϧā§āĻ āĻāϧā§āύāĻŋāĻ Python 3.6+
āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, int āĻāϰ āĻāύā§āϝ:
item_id: int
āĻ
āĻĨāĻŦāĻž āĻāϰāĻ āĻāĻāĻŋāϞ Item āĻŽāĻĄā§āϞā§āϰ āĻāύā§āϝ:
item: Item
...āĻāĻŦāĻ āϏā§āĻ āĻāĻāĻ āĻā§āώāĻŖāĻžāϰ āϏāĻžāĻĨā§ āĻāĻĒāύāĻŋ āĻĒāĻžāĻŦā§āύ:
-
āĻāĻĄāĻŋāĻāϰ āϏāĻžāĻšāĻžāϝā§āϝ, āϝā§āĻŽāύ
- āϏāĻŽāĻžāĻĒā§āϤāĻŋāĨ¤
- āϧāϰāĻŖ āϝāĻžāĻāĻžāĻ
-
āϤāĻĨā§āϝ āϝāĻžāĻāĻžāĻāĻāϰāĻŖ:
- āĻĄā§āĻāĻž āĻ āĻŦā§āϧ āĻšāϞ⧠āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ āĻāĻŦāĻ āĻĒāϰāĻŋāώā§āĻāĻžāϰ āϤā§āϰā§āĻāĻŋāϰ āύāĻŋāϰā§āĻĻā§āĻļāύāĻžāĨ¤
- āĻāĻŽāύāĻāĻŋ āĻāĻā§āϰāĻāĻžāĻŦā§ āύā§āϏā§āĻ āĻāϰāĻž JSON āĻ āĻŦāĻā§āĻā§āĻā§āϰ āĻāύā§āϝ āĻŦā§āϧāϤāĻžāĨ¤
-
āĻĒā§āϰā§āϰāĻŋāϤ āϤāĻĨā§āϝ āϰā§āĻĒāĻžāύā§āϤāϰ: āϝāĻž āύā§āĻāĻā§āĻžāϰā§āĻ āĻĨā§āĻā§ āĻĒāĻžāĻāĻĨāύā§āϰ āϤāĻĨā§āϝ āĻāĻŦāĻ āϧāϰāύ⧠āĻāϏā§, āĻāĻŦāĻ āϏā§āĻāĻžāύ āĻĨā§āĻā§ āĻĒā§āĻž:
- JSONāĨ¤
- āĻĒāĻžāĻĨ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰāĨ¤
- āĻā§ā§ā§āϰāĻŋ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰāĨ¤
- āĻā§āĻāĻŋāĻ
- āĻšā§āĻĄāĻžāϰ
- āĻĢāϰā§āĻŽ
- āĻĢāĻžāĻāϞ
-
āĻāĻāĻāĻĒā§āĻ āĻĄā§āĻāĻžāϰ āϰā§āĻĒāĻžāύā§āϤāϰ: āĻĒāĻžāĻāĻĨāύ āĻĄā§āĻāĻž āĻāĻŦāĻ āĻāĻžāĻāĻĒ āĻĨā§āĻā§ āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻ āĻĄā§āĻāĻžāϤ⧠āϰā§āĻĒāĻžāύā§āϤāϰ āĻāϰāĻž (JSON āĻšāĻŋāϏāĻžāĻŦā§): -āĻĒāĻžāĻāĻĨāύ āĻāĻžāĻāĻĒā§ āϰā§āĻĒāĻžāύā§āϤāϰ āĻāϰā§āύ (
str,int,float,bool,list, āĻāϤā§āϝāĻžāĻĻāĻŋ)āĨ¤datetimeāĻ āĻŦāĻā§āĻā§āĻāĨ¤UUIDobjeāĻ āĻŦāĻā§āĻā§āĻctsāĨ¤- āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻŽāĻĄā§āϞāĨ¤
- ...āĻāĻŦāĻ āĻāϰ⧠āĻ āύā§āĻāĨ¤
-
āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ āĻā§āϰāĻŋā§āĻžāĻļā§āϞ API āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž āύāĻĨāĻŋ, 2āĻāĻŋ āĻŦāĻŋāĻāϞā§āĻĒ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāύā§āĻāĻžāϰāĻĢā§āϏ āϏāĻš:
- āϏā§āϝāĻŧāĻžāĻāĻžāϰ āĻāĻ āĻāĻ (Swagger UI)āĨ¤
- āϰāĻŋāĻĄāĻ (ReDoc)āĨ¤
āĻĒā§āϰā§āĻŦāĻŦāϰā§āϤ⧠āĻā§āĻĄ āĻāĻĻāĻžāĻšāϰāĻŖā§ āĻĢāĻŋāϰ⧠āĻāϏāĻž āϝāĻžāĻ, FastAPI āϝāĻž āĻāϰāĻŦā§:
GETāĻāĻŦāĻPUTāĻ āύā§āϰā§āϧā§āϰ āĻāύā§āϝ āĻĒāĻĨā§item_idāĻāĻā§ āĻāĻŋāύāĻž āϤāĻž āϝāĻžāĻāĻžāĻ āĻāϰāĻŦā§āĨ¤GETāĻāĻŦāĻPUTāĻ āύā§āϰā§āϧā§āϰ āĻāύā§āϝitem_idāĻāĻžāĻāĻĒintāĻāϰ āĻšāϤ⧠āĻšāĻŦā§ āϤāĻž āϝāĻžāĻāĻžāĻ āĻāϰāĻŦā§āĨ¤- āϝāĻĻāĻŋ āύāĻž āĻšāϝāĻŧ āϤāĻŦā§ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻāĻāĻāĻŋ āĻāĻĒāϝā§āĻā§āϤ, āĻĒāϰāĻŋāώā§āĻāĻžāϰ āϤā§āϰā§āĻāĻŋ āĻĻā§āĻāϤ⧠āĻĒāĻžāĻŦā§āύāĨ¤
GETāĻ āύā§āϰā§āϧā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻāĻā§āĻāĻŋāĻ āĻā§āϝā§āϝāĻŧā§āϰāĻŋ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āύāĻžāĻŽāĻq(āϝā§āĻŽāύhttp://127.0.0.1:8000/items/foo?q=somequery) āĻāĻā§ āĻāĻŋ āϤāĻž āĻā§āĻ āĻāϰāĻŦā§āĨ¤- āϝā§āĻšā§āϤā§
qāĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰāĻāĻŋ= NoneāĻĻāĻŋāϝāĻŧā§ āĻā§āώāĻŖāĻž āĻāϰāĻž āĻšāϝāĻŧā§āĻā§, āϤāĻžāĻ āĻāĻāĻŋ āĻāĻā§āĻāĻŋāĻāĨ¤ NoneāĻāĻžāĻĄāĻŧāĻž āĻāĻāĻŋ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻšāϤ⧠(āϝā§āĻŽāύPUTāĻāϰ āĻā§āώā§āϤā§āϰ⧠āĻšā§ā§āĻā§)āĨ¤
- āϝā§āĻšā§āϤā§
/items/{item_id}āĻāϰ āĻāύā§āϝPUTāĻ āύā§āϰā§āϧā§āϰ āĻŦāĻĄāĻŋ JSON āĻšāĻŋāϏāĻžāĻŦā§ āĻĒāĻĄāĻŧā§āύ:- āϞāĻā§āώ āĻāϰā§āύ,
nameāĻāĻāĻāĻŋ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻ ā§āϝāĻžāĻā§āϰāĻŋāĻŦāĻŋāĻāĻ āĻšāĻŋāϏāĻžāĻŦā§ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰā§āĻā§ āĻāĻŦāĻ āĻāĻāĻŋstrāĻšāϤ⧠āĻšāĻŦā§āĨ¤ - āϞāĻā§āώ āĻāϰā§āύ āĻāĻāĻžāύā§,
priceāĻ ā§āϝāĻžāĻā§āϰāĻŋāĻŦāĻŋāĻāĻāĻāĻŋ āĻāĻŦāĻļā§āϝāĻ āĻāĻŦāĻ āĻāĻāĻŋfloatāĻšāϤ⧠āĻšāĻŦā§āĨ¤ - āϞāĻā§āώ āĻāϰā§āύ
is_offerāĻāĻāĻāĻŋ āĻāĻā§āĻāĻŋāĻ āĻ ā§āϝāĻžāĻā§āϰāĻŋāĻŦāĻŋāĻāĻ āĻāĻŦāĻ āĻāĻāĻŋboolāĻšāϤ⧠āĻšāĻŦā§ āϝāĻĻāĻŋ āĻāĻĒāϏā§āĻĨāĻŋāϤ āĻĨāĻžāĻā§āĨ¤ - āĻāĻ āϏāĻŦāĻāĻŋ āĻāĻā§āϰāĻāĻžāĻŦā§ āĻ āĻŦāϏā§āĻĨāĻžāύāϰāϤ JSON āĻ āĻŦāĻā§āĻā§āĻāĻā§āϞāĻŋāϤā§āĻ āĻāĻžāĻ āĻāϰāĻŦā§āĨ¤
- āϞāĻā§āώ āĻāϰā§āύ,
- āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ JSON āĻšāϤ⧠āĻāĻŦāĻ JSON āĻĨā§āĻā§ āĻāύāĻāĻžāϰā§āĻ āĻāϰā§āύāĨ¤
- OpenAPI āĻĻāĻŋāϝāĻŧā§ āϏāĻŦāĻāĻŋāĻā§ āĻĄāĻā§āĻŽā§āύā§āĻ āĻāϰā§āύ, āϝāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§:
- āĻā§āϰāĻŋā§āĻžāĻļā§āϞ āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž āύāĻĨāĻŋāĨ¤
- āĻ āύā§āĻ āĻāĻžāώāĻžāϰ āĻāύā§āϝ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻā§āĻĄ āϤā§āϰāĻŋāϰ āĻŦā§āϝāĻŦāϏā§āĻĨāĻžāĨ¤
- āϏāϰāĻžāϏāϰāĻŋ 2āĻāĻŋ āĻā§āϰāĻŋā§āĻžāĻļā§āϞ āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž āύāĻĨāĻŋ āĻāϝāĻŧā§āĻŦ āĻĒā§āώā§āĻ āĻĒā§āϰāĻĻāĻžāύ āĻāϰāĻž āĻšā§ā§āĻā§āĨ¤
āĻāĻŽāϰāĻž āĻāϤāĻā§āώāύ āĻļā§āϧ⧠āĻāϰ āĻĒā§āώā§āĻ āϤā§āϰāĻŋ āĻāϰā§āĻāĻŋ, āĻāĻŋāύā§āϤ⧠āĻāĻĒāύāĻŋ āĻāϤāĻŽāϧā§āϝā§āĻ āĻāĻāĻŋ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰ⧠āϤāĻžāϰ āϧāĻžāϰāĻŖāĻžāĻ āĻĒā§ā§ā§ āĻāĻŋā§ā§āĻā§āύāĨ¤
āύāĻŋāĻŽā§āύā§āĻā§āϤ āϞāĻžāĻāύ āĻā§āϞ⧠āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰā§āύ:
return {"item_name": item.name, "item_id": item_id}
...āĻĒā§āϰā§āĻŦā§:
... "item_name": item.name ...
...āĻĒāϰāĻŦāϰā§āϤā§āϤā§:
... "item_price": item.price ...
...āĻāĻŦāĻ āĻĻā§āĻā§āύ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻĒāύāĻžāϰ āĻāĻĄāĻŋāĻāϰ āĻāĻĒāĻžāĻĻāĻžāύāĻā§āϞā§āĻā§ āϏā§āĻāĻā§āϰāĻŋā§āĻāĻžāĻŦā§-āϏāĻŽā§āĻĒāύā§āύ āĻāϰāĻŦā§ āĻāĻŦāĻ āϤāĻžāĻĻā§āϰ āϧāϰāύ āĻāĻžāύāϤ⧠āĻĒāĻžāϰāĻŦā§:
āĻāϰāĻ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ āϏāĻŽā§āĻĒāύā§āύ āĻāĻĻāĻžāĻšāϰāĻŖā§āϰ āĻāύā§āϝ, āĻĻā§āĻā§āύ āĻāĻŋāĻāĻā§āϰāĻŋā§āĻžāϞ - āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāĻžāĻāĻĄ.
āϏā§āĻĒā§āϞāĻžāϰ āϏāϤāϰā§āĻāϤāĻž: āĻāĻŋāĻāĻā§āϰāĻŋā§āĻžāϞ - āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāĻžāĻāĻĄ āύāĻŋāĻŽā§āύā§āĻā§āϤ āĻŦāĻŋāώā§āĻā§āϞāĻŋ āĻ āύā§āϤāϰā§āĻā§āĻā§āϤ āĻāϰā§:
- āĻšā§āĻĄāĻžāϰ, āĻā§āĻāĻŋāĻ, āĻĢāϰā§āĻŽ āĻĢāĻŋāϞā§āĻĄ āĻāĻŦāĻ āĻĢāĻžāĻāϞāĻā§āϞāĻŋ āĻāĻŽāύ āĻ āύā§āϝāĻžāύā§āϝ āĻāĻžā§āĻāĻž āĻĨā§āĻā§ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻā§āώāĻŖāĻž āĻāϰāĻžāĨ¤
maximum_lengthāĻŦāĻžregexāĻāϰ āĻŽāϤ⧠āϝāĻžāĻāĻžāĻāĻāϰāĻŖ āĻŦāĻžāϧāĻžāĻŽā§āĻā§āϤāĻŋ āϏā§āĻ āĻāϰāĻž āĻšāϝāĻŧ āĻāĻŋāĻāĻžāĻŦā§, āϤāĻž āύāĻŋā§ā§ āĻāϞā§āĻāύāĻž āĻāϰāĻž āĻšāĻŦā§āĨ¤- āĻāĻāĻāĻŋ āĻā§āĻŦ āĻļāĻā§āϤāĻŋāĻļāĻžāϞ⧠āĻāĻŦāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϏāĻšāĻ āĻĄāĻŋāĻĒā§āύā§āĻĄā§āύā§āϏāĻŋ āĻāύāĻā§āĻāĻļāύ āĻĒāĻĻā§āϧāϤāĻŋ
- OAuth2 āĻāĻŦāĻ JWT āĻā§āĻā§āύ āĻāĻŦāĻ HTTP Basic auth āϏāĻš āύāĻŋāϰāĻžāĻĒāϤā§āϤāĻž āĻāĻŦāĻ āĻ āύā§āĻŽā§āĻĻāύāĻĒā§āϰāĻžāĻĒā§āϤāĻŋ āϏāĻŽā§āĻĒāϰā§āĻāĻŋāϤ āĻŦāĻŋāώā§āϏāĻŽā§āĻšā§āϰ āĻāĻĒāϰāĨ¤
- āĻāĻā§āϰāĻāĻžāĻŦā§ āĻ āĻŦāϏā§āĻĨāĻžāύāϰāϤ JSON āĻŽāĻĄā§āϞ āĻā§āώāĻŖāĻž āĻāϰāĻžāϰ āĻāύā§āϝ āĻāϰāĻ āĻāύā§āύāϤ (āĻāĻŋāύā§āϤ⧠āϏāĻŽāĻžāύ āϏāĻšāĻ) āĻā§āĻļāϞ (Pydantic āĻā§ āϧāύā§āϝāĻŦāĻžāĻĻ)āĨ¤
- āĻāϰ⧠āĻ
āϤāĻŋāϰāĻŋāĻā§āϤ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ (āϏā§āĻāĻžāϰāϞā§āĻāĻā§ āϧāύā§āϝāĻŦāĻžāĻĻ) āĻšāĻŋāϏāĻžāĻŦā§:
- WebSockets
- GraphQL
- HTTPX āĻāĻŦāĻ
pytestāĻāĻŋāϤā§āϤāĻŋāĻ āĻ āϤā§āϝāύā§āϤ āϏāĻšāĻ āĻĒāϰā§āĻā§āώāĻž - CORS
- Cookie Sessions
- ...āĻāĻŦāĻ āĻāϰā§āĨ¤
āĻāϰā§āĻŽāĻā§āώāĻŽāϤāĻž
āϏā§āĻŦāĻžāϧā§āύ TechEmpower Benchmarks āĻĻā§āĻāĻžāϝāĻŧ āϝ⧠FastAPI āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻā§āϞāĻŋ Uvicorn-āĻāϰ āĻ āϧā§āύ⧠āĻāϞāĻŽāĻžāύ āĻĻā§āϰā§āϤāϤāĻŽāĻĒāĻžāĻāĻĨāύ āĻĢā§āϰā§āĻŽāĻāϝāĻŧāĻžāϰā§āĻāĻā§āϞāĻŋāϰ āĻŽāϧā§āϝ⧠āĻāĻāĻāĻŋ, āĻļā§āϧā§āĻŽāĻžāϤā§āϰ Starlette āĻāĻŦāĻ Uvicorn-āĻāϰ āĻĒāϰ (FastAPI āĻĻā§āĻŦāĻžāϰāĻž āĻ āĻā§āϝāύā§āϤāϰā§āĻŖāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšā§āϤ)āĨ¤ (*)
āĻāĻāĻŋ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāϰāĻ āĻŦā§āĻāϤā§, āĻĻā§āĻā§āύ Benchmarks.
āĻāĻā§āĻāĻŋāĻ āύāĻŋāϰā§āĻāϰāĻļā§āϞāϤāĻž
Pydantic āĻĻā§āĻŦāĻžāϰāĻž āĻŦā§āϝāĻŦāĻšā§āϤ:
email-validator- āĻāĻŽā§āϞ āϝāĻžāĻāĻžāĻāĻāϰāĻŖā§āϰ āĻāύā§āϝāĨ¤
āϏā§āĻāĻžāϰāϞā§āĻ āĻĻā§āĻŦāĻžāϰāĻž āĻŦā§āϝāĻŦāĻšā§āϤ:
httpx- āĻāĻĒāύāĻŋ āϝāĻĻāĻŋTestClientāĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻāĻžāύ āϤāĻžāĻšāϞ⧠āĻāĻŦāĻļā§āϝāĻāĨ¤jinja2- āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻĒā§āϰāĻĻāϤā§āϤ āĻā§āĻŽāĻĒā§āϞā§āĻ āϰā§āĻĒāϰā§āĻāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻāĻžāύ āϤāĻžāĻšāϞ⧠āĻĒā§āϰāϝāĻŧā§āĻāύāĨ¤python-multipart- āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻĢāϰā§āĻŽ āϏāĻšāĻžāϝāĻŧāϤāĻž āĻāϰāϤ⧠āĻāĻžāύ āϤāĻžāĻšāϞ⧠āĻĒā§āϰāϝāĻŧā§āĻāύ "parsing",request.form()āϏāĻšāĨ¤itsdangerous-SessionMiddlewareāϏāĻšāĻžāϝāĻŧāϤāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāϝāĻŧā§āĻāύāĨ¤pyyaml- āϏā§āĻāĻžāϰāϞā§āĻā§āϰ SchemaGenerator āϏāĻžāĻĒā§āϰā§āĻ āĻāϰ āĻāύā§āϝ āĻĒā§āϰā§ā§āĻāύ (āĻāĻĒāύāĻžāϰ āϏāĻŽā§āĻāĻžāĻŦāϤ FastAPI āĻĒā§āϰāϝāĻŧā§āĻāύ āύā§āĻ)āĨ¤graphene-GraphQLAppāϏāĻšāĻžāϝāĻŧāϤāĻžāϰ āĻāύā§āϝ āĻĒā§āϰā§ā§āĻāύāĨ¤
FastAPI / Starlette āĻĻā§āĻŦāĻžāϰāĻž āĻŦā§āϝāĻŦāĻšā§āϤ:
uvicorn- āϏāĻžāϰā§āĻāĻžāϰā§āϰ āĻāύā§āϝ āϝāĻž āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āϞā§āĻĄ āĻāϰ⧠āĻāĻŦāĻ āĻĒāϰāĻŋāĻŦā§āĻļāύ āĻāϰā§āĨ¤orjson- āĻāĻĒāύāĻŋORJSONResponseāĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻāĻžāĻāϞ⧠āĻĒā§āϰāϝāĻŧā§āĻāύāĨ¤ujson- āĻāĻĒāύāĻŋUJSONResponseāĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻāĻžāĻāϞ⧠āĻĒā§āϰāϝāĻŧā§āĻāύāĨ¤
āĻāĻĒāύāĻŋ āĻāĻ āϏāĻŦ āĻāύāϏā§āĻāϞ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ pip install fastapi[all] āĻĻāĻŋā§ā§.
āϞāĻžāĻāϏā§āύā§āϏ
āĻāĻ āĻĒā§āϰāĻā§āĻā§āĻ MIT āϞāĻžāĻāϏā§āύā§āϏ āύā§āϤāĻŋāĻŽāĻžāϞāĻžāϰ āĻ āϧā§āύ⧠āĻļāϰā§āϤāĻžā§āĻŋāϤāĨ¤







