/
Xton
/
Case_13_HTML_Newsletter_Builder
Обзор
Документация
Войти
/
Xton
/
Case_13_HTML_Newsletter_Builder
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
FullstackAPI/API v1(test)/main1.py
65 строк
2 KB
Xton
create: New file-1, main1.py
08 мар 2026, 19:24
Верифицирован
08 мар 2026, 19:24
5face82
Код
Авторство
О чём код?
from fastapi import FastAPI from pydantic import BaseModel from typing import Optional import random app = FastAPI() # Модель запроса class MailRequest(BaseModel): campaign_id: str client_id: str # Модель ответа class MailResponse(BaseModel): campaign_id: str client_id: str status: str error: Optional[str] = None # База данных (просто словарь) campaign_status = {} # POST /mail/send(эндпоинты) @app.post("/mail/send", response_model=MailResponse) def send_mail(request: MailRequest): # список из которого берутся значения для рандома statuses = ["queued", "sending", "failed"] status = random.choice(statuses) error = None if status == "failed": error = "SMTP connection error" campaign_status[request.campaign_id] = status return { "campaign_id": request.campaign_id, "client_id": request.client_id, "status": status, "error": error } # GET /campaigns/{id}/status(эндпоинты) @app.get("/campaigns/{campaign_id}/status") def get_campaign_status(campaign_id: str): status = campaign_status.get(campaign_id) if status is None: return { "campaign_id": campaign_id, "status": "not_found", "error": "Campaign does not exist" } return { "campaign_id": campaign_id, "status": status, "error": None } # Для запуска напрямую if name == "__main__": uvicorn.run(app, host="0.0.0.0", port=8000)