Миграция

Обновление клиентских библиотек и SDK при миграции

Многие интеграции геокодирования и геоданных вообще не обращаются к HTTP API напрямую; они работают через официальную клиентскую библиотеку или SDK, которые оборачивают запросы, выполняют аутентификацию и возвращают результаты в виде типизированных объектов на том языке, на котором написано приложение. Этот дополнительный слой удобен в повседневной работе, но он добавляет реальную сложность при миграции, потому что в план должна входить сама библиотека, а не только API за ней.

В целом миграция с участием клиентской библиотеки обычно развивается по одному из трёх сценариев, и до начала работы стоит определить, какой из них подходит вам:

Библиотека поддерживает собственный базовый URL. Некоторые официальные клиентские библиотеки написаны достаточно гибко, чтобы принимать другой базовый URL для запросов, сохраняя остальной интерфейс без изменений, и в этом случае направить существующую библиотеку на совместимый хост, если структура ответа совпадает с той, которую библиотека ожидает разобрать, можно практически без изменений в коде приложения. Это лучший случай, и его стоит проверить в первую очередь.

Библиотека жёстко привязана к одному хосту. Многие клиентские библиотеки жёстко прописывают целевой хост или делают допущения, специфичные для процесса аутентификации их провайдера, которые нельзя легко перенаправить. В этом случае прагматичный путь обычно состоит в том, чтобы полностью обойти библиотеку для перенесённых вызовов и отправлять запросы напрямую в API нового провайдера, заменив типизированную обёртку библиотеки собственной тонкой функцией запроса.

Библиотека вообще не используется. Если ваша интеграция уже отправляет обычные HTTP-запросы без официальной библиотеки посередине, весь этот вопрос вас не касается, и миграция сводится к более прямой задаче: сменить хост, ключ и скорректировать разбор ответа там, где это нужно.

Поскольку аутентификация My Geocode поддерживает заголовок X-API-Key, заголовок Authorization: Bearer, HTTP Basic auth или параметр запроса, у клиентской библиотеки, которая уже выполняет аутентификацию одним из этих распространённых способов, есть неплохие шансы заработать с совместимым хостом после простой смены базового URL и нового ключа, даже без официальной поддержки этой платформы в собственной библиотеке. Это стоит проверить непосредственно в тестовой среде, прежде чем предполагать, что всё заработает без изменений или что не заработает вовсе; фактический результат полностью зависит от того, насколько гибко написана конкретная библиотека.

Какой бы путь вам ни подошёл, стоит явно зафиксировать это решение в заметках о миграции, поскольку зависимость от библиотеки, которую во время миграции тихо обошли, но не задокументировали, обычно сбивает с толку того, кто сопровождает код год спустя и обновляет старую библиотеку, ожидая, что она всё ещё участвует в обработке запросов. Короткий комментарий о том, что запросы теперь идут в обход официальной клиентской библиотеки, и о том, почему, избавит от реальной путаницы в будущем.