TGViewer
Software architecture Software architecture @software_architecture_ru · 670 subscribers
Post #39 2.62K
И снова размышление о версионировании REST API. Казалось бы, его место в URI и спор может быть только о том говорить api/v1 или api/1. Но возникают все новые варианты. Вариант 1 - версионировать тела запросов, то есть добавить версию в json. Недостатки: nginx/apigee не сможет роутить запрос на нужную версию инстанса, а значит несимпатичная compatibility логика оказывается в компоненте, увеличивая его сложность(и эту логику никто не любит ни писать, ни тестировать, ну и дальше вы понимаете). Вариант 2 - Microsoft-овский - версия в query parameters https://github.com/microsoft/api-guidelines/blob/vNext/Guidelines.md#12-versioning. Недостатки: routing по query params потребует их парсинга, что увеличит время процессинга; а кроме того усложнится клиент, ведь ему прийдется в явном виде каждый раз формировать query parameters (или надеяться что версия не поломается, а сколько людей не читают документацию). Вариант 3 - версия в header-е https://youtu.be/P0a7PwRNLVU . Routing получше, чем вариант 2, но сложность клиента опять же возрастает с теми же рисками что в варианте 2.

Вывод. Не ставить версию в URI могут только те команды, которые уверены либо в короткой жизни продукта либо в бессмертии технического лидера (или тотальной преемственности). Потому что клиенты будут забывать ставить версию, если их не насиловать на эту тему, а логика back-compatibility в компоненте постоянно будет источником багов. Да и зачем придумывать новое, когда есть понятное дефолтное для всех решение?
GitHub api-guidelines/Guidelines.md at vNext · microsoft/api-guidelines Microsoft REST API Guidelines. Contribute to microsoft/api-guidelines development by creating an account on GitHub.
More from @software_architecture_ru
  1. Sep 13, 2024Написали статью о карьере архитектора в стиле геймдева https://habr.com/ru/companies/kaspe…
  2. Nov 11, 2023В очередной раз поною о неопределимости и неназываемости quality attribute-ов. Вот громадн…
  3. Sep 16, 2023Читая книгу по производительности систем от Грегга Брендана https://ozon.ru/t/X30XowG , ли…
  4. Apr 8, 2023Сколько лет сталкиваюсь с производительностью, столько не перестаю удивляться людям, котор…
  5. Mar 31, 2023Цитата дня: "The greatest limitation in writing software is our ability to understand the…
  6. Sep 9, 2022Воодушевляющая пятничная аналитика о падении больших ИТ проектов https://spectrum.ieee.org…
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 →