Урок 11. Community Pulse: GET/POST/PUT/DELETE эндпоинты

📁 Блок: Flask ⏱️ Время изучения: ~90 мин 🎯 Сложность: Средняя
#flask #rest-api #crud #http-status #request-object #sqlalchemy #blueprints

⚡ Кратко: REST CRUD для Community Pulse

Урок 11 — реализация полного набора REST-эндпоинтов проекта Community Pulse: чтение, создание, обновление и удаление вопросов, плюс добавление ответов со статистикой.

  • GET /questions — список всех вопросов через db.session.execute(select(Question)).scalars()
  • POST /questions — создать вопрос: request.get_json() + валидация + db.session.add() + commit()
  • PUT /questions/<id> — обновить текст вопроса, вернуть 200 или 400/404
  • DELETE /questions/<id> — удалить вопрос, вернуть 200 или 404
  • POST /responses — добавить ответ + атомарно обновить статистику Statistic
  • Объект request: args, form, json, data, files, method, headers
  • HTTP-статусы: 200 OK, 201 Created, 204, 400, 401, 404, 409, 500

Топ-3 ошибки: 1) Забыть db.session.commit(). 2) Не проверить data is None до обращения к ключам. 3) Использовать Query.get(id) (устарело) вместо db.session.get(Model, id).

📖 О чём этот урок

Урок 11 — продолжение разработки проекта Community Pulse. В прошлом уроке (09) мы настроили структуру проекта, Blueprints и Application Factory. Теперь задача — реализовать все рабочие эндпоинты: получать вопросы из БД, создавать новые, обновлять и удалять, а также принимать ответы от пользователей и вести статистику.

Что изучим

  • GET запросы с ORM — загрузка данных из базы и сериализация в JSON
  • POST запросы — получение данных из тела запроса, валидация, сохранение
  • Объект request: все ключевые атрибуты и методы
  • HTTP статус-коды: классификация, смысл, применение во Flask
  • PUT и DELETE эндпоинты — обновление и удаление ресурсов
  • Связанные эндпоинты — add_response с атомарным обновлением Statistic
  • Современный SQLAlchemy 2.x: db.session.get(), select(), scalars()

📚 Что повторить перед изучением

🎯 Что изучать дальше