TGViewer
Лаборатория Математики и Программирования Сергея Бобровского Лаборатория Математики и Программирования Сергея Бобровского @lambda_brain · 1.41K subscribers
Post #828 1.19K
По поводу валидации на сервере.

В Dwarf Fortress борода дварфа каждый день увеличивается на 1 единицу длины. Фронтенд запросом API получил JSON, увеличил поле beard на +1 и отправил его обратно. Но по правилам длина бороды не может превышать 1000 единиц. Где её контролировать?

Конечно, на сервере валидация обязательно нужна, но лучше всего, чтобы она была везде.
Что легче: добавить доп.проверку бороды на фронте, или дополнительно парсить ответ сервера на предмет ошибки, если с бородой пошло "что-то" (что?) не так? Понятно, что магические числа вроде 1000 это совсем плохо, поэтому можно добавить запрос по конфигурационным настройкам, и т.п.

Проблема в том, что если клиент написан не на JavaScript, а на другом языке, где нету нативной поддержки JSON (без "ручной" сериализации/десериализации) -- например, это мобильное приложение, то в случае, когда на сервере структура дварфа изменится (добавится новое поле), может поломаться и и фронтенд, и серверная логика игры (например, дополнительное поле, неизвестное клиенту, всегда будет уходить из фронтенда на сервер как null).

Поэтому обычно от сервера в таких случаях требуют не менять схему API-ответа вообще, а если что-то там изменилось, следует создать новую версию и предоставлять её отдельно по другому URI, например api/dwarf/v2/123.json. Клиенты переберутся на неё постепенно (как наивно полагает тимлид :).

Да, но если API активно развивается, то не успеем мы оглянуться, как окажемся на v256, и, скорее всего, многие (если не все) из этих версий будут нуждаться в поддержке!

Как легко и просто реализовывать подобные API на сотню разных версий, не ломая фронтенд и не требуя его переделки, скоро расскажу курсантам в СильныхИдеях всем в основном паблике вк.
  • 🔥 21
  • 👍 5
  • 🙏 2
  • 🫡 2
  • 👏 1
More from @lambda_brain
  1. Oct 15, 2026И вот куда же в этом десятилетии придёт айтишка с эйайкой?? Ладно, спалю базу. Вот о чём т…
  2. Oct 15, 2026Уничтожаем всю мировую AI-индустрию и бизнес на цодах-шмодах одним сетапом. Старенький сис…
  3. Oct 15, 2026Вот идеальный формат собеседования в айтишке: в течение часа наблюдайте за тем, как кто-то…
  4. Oct 15, 2026Каждый месяц мой рабочий процесс разработки с использованием AI полностью заменяется совсе…
  5. Oct 14, 2026Этот отчёт ментата заслуживает быть приведённым полностью => Итоги. Часов 8 "одним подходо…
  6. Oct 14, 2026Прекрасное: вся музыкальная индустрия перешла на цифру и стриминг, но музыкальная экономик…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →