Как написать простой HTTP API на FastAPI?
- Как объявить эндпоинт в FastAPI?
- Чем path-параметр отличается от query-параметра?
Создать приложение app = FastAPI(), объявить обработчики декораторами @app.get, @app.post и др. Параметр из пути (/items/{item_id}) становится аргументом функции, остальные простые аргументы — query-параметрами, а аргумент-модель Pydantic — телом запроса. Типы аргументов проверяются автоматически, ошибка — 422. Документация API доступна по /docs. Запуск — ASGI-сервером uvicorn.
- Код ответа: status_code в декораторе, ошибки — HTTPException
- response_model задаёт схему ответа и скрывает лишние поля
- async def — если внутри асинхронные вызовы; синхронную функцию FastAPI выполнит в пуле потоков
А ещё Документация /docs строится из аннотаций — отдельно писать её не нужно
Подробно
Пример:
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
app = FastAPI()
class ItemIn(BaseModel):
name: str
price: float
@app.get("/items/{item_id}")
def get_item(item_id: int, details: bool = False):
item = db.get(item_id)
if item is None:
raise HTTPException(status_code=404, detail="Нет такого товара")
return item
@app.post("/items", status_code=201)
def create_item(item: ItemIn):
return db.add(item)
uvicorn main:app --reloadЧто хотят услышать
- Декораторы маршрутов.
- Path, query, тело через Pydantic.
- Автоматическая проверка и 422.
- HTTPException, uvicorn, /docs.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Параметры пути и query — аргументы функции, а тело запроса читают вручную из строки, без Pydantic
- ✗FastAPI-приложение запускают через python main.py без сервера
- ✓Параметры пути и query — аргументы функции, модель Pydantic — тело; неверные типы дают 422
- ✗Документацию API нужно писать отдельно вручную
Разбор темы
- Веб на Python — WSGI и ASGI, FastAPI, HTTP-клиенты, JSON, Django ORM
Чем WSGI отличается от ASGI, простой API на FastAPI и внедрение зависимостей, requests и httpx с таймаутами, JSON с датами и деньгами, N+1 в Django.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.