Переход с виджета DaData: подсказки без переписывания кода

Если на сайте уже стоит виджет подсказок DaData, переписывать вёрстку и обработчики не нужно: у нас есть совместимый слой, и переезд сводится к замене адреса сервиса и ключа.

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

Самый быстрый путь: поменять один адрес

В их библиотеке suggestions-js базовый адрес сервиса задаётся настройкой serviceUrl. По умолчанию она указывает на их домен. Достаточно заменить её на наш адрес и подставить публичный ключ hintdata — остальной вызов остаётся прежним: тип подсказок, колбэки, оформление, разметка формы.

НастройкаБылоСтало
serviceUrlhttps://suggestions.dadata.ru/suggestions/api/4_1/rshttps://api.hintdata.ru/suggestions/api/4_1/rs
tokenключ DaDataпубличный ключ hintdata (pk_)
typeADDRESS, PARTY, FIO…без изменений
Колбэки и оформлениевашибез изменений
Их виджет на старте проверяет доступность сервиса отдельным запросом и без ответа не запускается — этот запрос мы поддерживаем и не тарифицируем. Ставить заглушки или патчить библиотеку не нужно.

Что продолжит работать как раньше

  • Подсказки по адресам, ФИО, банкам, организациям и справочникам — те же типы, что вы уже используете.
  • Поиск по идентификатору: адрес по коду ФИАС, организация по ИНН.
  • Обратное геокодирование — адрес по координатам.
  • Определение города по IP для подстановки региона по умолчанию.
  • Формат ответа: совместимый слой отдаёт данные в той же форме, что и раньше, — ваш разбор ответа не меняется.

Что поменяется

Совместимый слой существует ради переезда без правок, но он повторяет чужую форму ответа и потому беднее. В нашем родном формате приходит больше: вложенные компоненты адреса с кодами ФИАС и КЛАДР на каждом уровне, координаты, кадастровый номер, уверенность в конкретном доме. Переключиться можно позже и постепенно — совместимый слой никуда не денется.

Тарифы и лимиты считаются по нашим правилам — их разбор в статье про лимиты и ошибки API. Общее сравнение сервисов и порядок переезда — в статье про переход с DaData.

Если стоит старый плагин на jQuery

На многих сайтах до сих пор работает их прежний плагин к jQuery. Там та же настройка serviceUrl и тот же token — меняются ровно две строки в инициализации. Обновлять сам плагин ради переезда не требуется: он обращается к тем же адресам, которые мы поддерживаем.

Когда стоит перейти на наш виджет

Замена адреса — это переезд без потерь, но и без выигрыша в возможностях. Если руки дойдут до формы, наш виджет умеет заметно больше, а подключается тегом script и атрибутами на полях.

Связанные поля
Город → улица → дом: дочернее поле выключено, пока не выбран родитель, и ищет только внутри него. Задаётся атрибутом, без JavaScript.
Автозаполнение соседних полей
Одна подсказка раскладывается по индексу, городу и улице; ФИО — по фамилии, имени и отчеству.
Стили без отдельного импорта
Оформление встроено в сборку: отдельный файл стилей подключать не нужно, вид настраивается CSS-переменными.
Доступность из коробки
Список объявляется скринридеру по стандартному шаблону combobox — важно для сайтов с требованиями доступности.

Как это выглядит в реальной корзине — в статье про подсказки адреса в интернет-магазине. Пошаговое подключение с нуля — в статье про подсказки адресов на сайте.

Ключи и порядок переезда

  • Заведите публичный ключ (pk_) в личном кабинете — он предназначен для браузера и ограничивается списком разрешённых IP.
  • Замените serviceUrl и token на тестовой копии сайта, проверьте адресное поле.
  • Выкатите на боевой сайт: вёрстка и обработчики не менялись, откат — возврат прежних двух значений.
  • Секретный ключ (sk_) понадобится только для серверных вызовов — стандартизации и поиска по идентификатору.

Частые вопросы

Нужно ли менять вёрстку формы при переходе с виджета DaData?
Нет. Меняются две настройки инициализации — адрес сервиса и ключ. Разметка, стили, обработчики выбора и остальной код остаются прежними.
Будет ли работать их библиотека с чужим сервером?
Да, в ней это предусмотрено: базовый адрес задаётся настройкой serviceUrl. Мы отвечаем по тем же путям и в том же формате, включая стартовую проверку доступности сервиса.
Что с ответом — придётся переписывать разбор данных?
Нет, если остаётесь на совместимом слое: форма ответа та же. Наш родной формат богаче, но переходить на него можно позже и по одному полю.
Можно ли откатиться, если что-то пойдёт не так?
Да. Откат — это возврат прежних значений serviceUrl и token, то есть правка двух строк без выката новой вёрстки.
Старый плагин к jQuery тоже подойдёт?
Да. В нём те же настройки адреса сервиса и ключа, обновлять плагин ради переезда не нужно.
Зачем тогда переходить на ваш виджет?
Ради возможностей, которых нет в совместимом слое: связанные поля, автозаполнение соседних полей, встроенные стили и поддержка скринридеров. Это отдельный шаг, и его можно сделать позже.

С чего начать

Читайте также

← Все статьи