Метод post
Метод post применяется к экземпляру класса APIRouter и вешает функцию на POST-запрос. Первым параметром передаётся путь URL. Вторым параметром можно передать дополнительные настройки, например, статус-код ответа или список зависимостей. Функция возвращает словарь, список или модель, которые FastAPI отдаёт как JSON.
Синтаксис
router.post(path, [response_model], [status_code], [tags], [dependencies])
Пример
Давайте создадим роутер и повесим обработчик на адрес '/create':
from fastapi import FastAPI, APIRouter
app = FastAPI()
router = APIRouter()
@router.post('/create')
def create_item():
return {'status': 'created'}
app.include_router(router)
Результат выполнения кода при POST-запросе на адрес /create:
{"status": "created"}
Пример
Давайте примем JSON-тело запроса и вернём его обратно. Для этого используем модель Pydantic:
from fastapi import FastAPI, APIRouter
from pydantic import BaseModel
app = FastAPI()
router = APIRouter()
class Item(BaseModel):
name: str
price: float
@router.post('/items/')
def create_item(item: Item):
return {'item': item}
app.include_router(router)
Результат выполнения кода при отправке JSON {"name": "abcde", "price": 10.5}:
{"item": {"name": "abcde", "price": 10.5}}
Пример
Давайте укажем статус-код ответа 201 и тег 'items' для группировки в документации:
from fastapi import FastAPI, APIRouter, status
app = FastAPI()
router = APIRouter()
@router.post('/items/', status_code=status.HTTP_201_CREATED, tags=['items'])
def create_item():
return {'status': 'created'}
app.include_router(router)
Результат выполнения кода при POST-запросе на адрес /items/:
{"status": "created"}