xxxxxxxxxx
from fastapi import APIRouter, FastAPI, Depends
app = FastAPI()
router = APIRouter()
app.include_router(
router,
prefix="/api",
tags="APIs",
dependencies=[Depends(get_token_header)],
responses={418: {"description": "I'm a teapot"}}
)
@router.get("/")
async def root():
return {"message": "Hello World"}
xxxxxxxxxx
pip install fastapi
pip install uvicorn # ASGI server
pip install starlette # lightweight ASGI framework/toolkit
pip install pydantic # Data validation and type annotations
# OR
pip install fastapi uvicorn starlette pydantic
xxxxxxxxxx
import uvicorn
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
if __name__ == '__main__':
uvicorn.run(app, port=8080, host="0.0.0.0")
xxxxxxxxxx
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
xxxxxxxxxx
<project-name>/src/<project-module-name>/main.py
from fastapi import FastAPI
import uvicorn
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
def start():
uvicorn.run("src.<project-module-name>.main:app", host="127.0.0.1", port=8000)
def dev():
uvicorn.run("src.<project-module-name>.main:app", host="127.0.0.1", port=8000, reload=True)
[tool.poetry]
name = "<project-name>"
version = "0.1.0"
description = ""
authors = ["FirstName <email@gmail.com>"]
readme = "README.md"
packages = [{ include = "<project-module-name>", from = "src" }]
[tool.poetry.dependencies]
python = "^3.12"
fastapi = "^0.109.0"
uvicorn = { extras = ["standard"], version = "^0.25.0" }
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
# script
[tool.poetry.scripts]
dev = "src.<project-module-name>.main:dev"
start = "src.<project-module-name>.main:app"