Pythoner
Фотография
✈️FastAPI поддерживает механизм Content Negotiation — это способ договориться, в каком формате клиент хочет получить ответ: JSON, HTML, XML и т.д.
➡️Как это работает?
Клиент отправляет в заголовке:
Accept: application/json
FastAPI проверяет Accept и возвращает наиболее подходящий формат, если он доступен.
➡️Пример:
from fastapi import FastAPI, Request
from fastapi.responses import JSONResponse, HTMLResponse
app = FastAPI()
@app.get("/")
async def get_root(request: Request):
if "text/html" in request.headers.get("accept", ""):
return HTMLResponse(content="<h1>Hello, HTML!</h1>")
return JSONResponse(content={"message": "Hello, JSON!"})
🔫В зависимости от Accept, клиент получит либо JSON, либо HTML.
➡️Подходит для:
• REST API с возможностью HTML-ответа (Swagger, docs)
• API, которые отдают разный формат в зависимости от платформы (например, Web vs Mobile)
🐍 Pythoner
13 · 1.6K ·