Skip to main content

Маршрутизация

Добавление маршрутов

Основной файл:

from fastapi import FastAPI 
from todo import todo_router 
 
app = FastAPI() 

@app.get("/") 
async def welcome() -> dict: 
    return { 
        "message": "Hello World" 
        } 

app.include_router(todo_router)

Файл дополнительных маршрутов

from fastapi import APIRouter 
 
todo_router = APIRouter()

todo_list = [] 
 
@todo_router.post("/todo") 
async def add_todo(todo: dict) -> dict: 
    todo_list.append(todo) 
    return {"message": "Todo added successfully"} 

@todo_router.get("/todo") 
async def retrieve_todos() -> dict: 
    return {"todos": todo_list}

Передаваемые параметры

Параметры пути:

from fastapi import Path

@todo_router.get("/todo/{todo_id}") 
async def get_single_todo(todo_id: int = Path(..., title="The ID of the todo to retrieve.")) -> dict: 
    for todo in todo_list: 
        if todo.id == todo_id: 
            return {"todo": todo} 
    return { 
        "message": "Todo with supplied ID doesn't exist." 
        }

В Path ... - параметр пути обязательный, None - не обязательный

Параметры запроса (после ? в запросе):

async query_route(query: str = Query(None): 
    return query