Вступить в клуб →
средняявопросREST API и валидация данных

Клиент прислал поле с опечаткой, получил 200, а email так и не обновился

class ProfileUpdate(BaseModel):
    name: str | None = None
    email: EmailStr | None = None

@app.patch("/profile")
async def update_profile(data: ProfileUpdate): ...

Мобильное приложение отправляет {"emial": "new@x.ru"}. Ответ — 200 OK, но email остался старым. Разработчики приложения неделю искали баг у себя. Что стоит сделать на стороне API?

  • Запретить лишние поля в модели — тогда опечатка вернёт 422
  • Сделать email обязательным полем модели обновления профиля
  • Возвращать 204 вместо 200, чтобы клиент перечитал профиль
  • Логировать тело каждого запроса на уровне INFO

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела