Интеграция API DaData.ru подсказки по адресам

Полная документация - API подсказки по адресам - https://dadata.ru/api/suggest/address/

Сервис DaData.ru (https://dadata.ru/suggestions/) предоставляет API поиска.

Ищет адреса по любой части адреса от региона до дома («тверская нижний 12» → «Нижегородская обл, г Нижний Новгород, ул Тверская, д 12»).

Также ищет по почтовому индексу («105568» → «г Москва, ул Магнитогорская»).

Регистрация.

Нужно зарегистрироваться и подтвердить почту.

Регистрация  - https://dadata.ru/suggestions/usage/address/#registration_popup

Подтвердить адрес электронной почты.

API начнет работать после подтверждения.

После регистрации в личном кабинете  https://dadata.ru/profile/#info  станут доступны API-ключ и Секретный ключ для стандартизации.

Подписка:Тариф «Бесплатный», действует бессрочно. Возможности - Бесплатно до 10 тысяч запросов в день.

API запрос.

Формат запроса.

  • URL - https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/address.
  • Метод – post.
  • Формат – json.
  • Кодировка -  UTF-8.
  • Content-Type –  application/json.
  • Accept –  application/json.
  • Authorization - Token 1d01d91d91d91d91d9f1d91d9_____ - API-ключ из личного кабинета.

 Тело запроса (формат json): 

{ "query": "москва серпуховская", "count": 20 }

query - Текст запроса (обязательный)

count - Количество результатов (максимум — 20) (не обязательный).

CREATE PROCEDURE [dbo].[api_daDataAddress_request]
	@parameters ExtendedDictionaryParameter READONLY,  -- входящие параметры для внутренней обработки (используйте Key, Value2)
	@username nvarchar(32)  -- текущий пользователь.

AS
BEGIN
DECLARE @queryCount nvarchar(2) = 20 		-- Количество результатов (максимум — 20)
SELECT  @queryCount = ISNULL( Value2 , '20' )  FROM @parameters WHERE [Key] = 'queryCount'
IF LEN( ISNULL( @queryCount , '20' ) ) = 0
	SET @queryCount = N'20'

DECLARE @queryStr nvarchar(max)
-- получение значений полей формы из @parameters
SELECT  @queryStr  =  ISNULL( Value2 , '' )  FROM @parameters WHERE [Key] = 'queryStr'

IF LEN( ISNULL( @queryStr , '' ) ) = 0
	SET @queryStr = N'москва серпуховская'
-- для тестирования
-- SET @queryStr = N'москва серпуховская' -- @queryStr = N'москва хабар' -- Текст запроса

DECLARE @apiUrl1 		nvarchar(max) = '' 		-- Финальная строка для отправки  -- ФАКТИЧЕСКИ ЭТО Url
DECLARE @jsonRequest1	nvarchar(max) = '' 	    -- текст json-объекта

SET     @apiUrl1  = 'https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/address'

-- для тестирования -- SET     @jsonRequest1 = N'{ "query": "москва серпуховская", "count": 20 }'
--
SET     @jsonRequest1 = N'{ "query": "'+ ISNULL( @queryStr, '' ) +'", "count": '+ TRY_CAST( ISNULL( @queryCount, '' )  AS nvarchar ) + ' }'

-------------------------------------------------------------------------------------------
    -- ОТЛАДКА
	 insert into as_trace ( header, text, username, code , created )   values( 'apiUrl1'       , @apiUrl1      , @username, 'api_daDataAddress_request' , GETDATE() )
	 insert into as_trace ( header, text, username, code , created )   values( '@jsonRequest1' , @jsonRequest1 , @username, 'api_daDataAddress_request' , GETDATE() )
-------------------------------------------------------------------------------------------

	-- SELECT 1
    	select '' Msg, 1 Result
          , @apiUrl1 Url
          , 'application/json' ContentType -- явное указание для HEADER

	-- SELECT 2 PARAMETERS - параметры, которые будут передаваться во внешний источник
	 select 'Authorization' name
           , 'Token 1d01d91d91d91d91d9f1d91d9' value
           , 'header' [type] -- form (в форме передается), header (в http headers), get запросы передавайте прямо в URL
     union
	 select 'body' name
           , @jsonRequest1 value -- это body
           , 'json' [type] -- form (в форме передается), header (в http headers), get запросы передавайте прямо в URL


END

В ответе на запрос приходит объект с массивом подсказок в поле suggestions.

Пример ответа (с сокращениями).

{
    "suggestions": [
        {
            "value": "г Москва, ул Хабаровская",
            "unrestricted_value": "г Москва, ул Хабаровская",
            "data": {
                "postal_code": null,
                "country": "Россия",
                "country_iso_code": "RU",
                "federal_district": null,
                "region_fias_id": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
            }
        },
        ...
    ]
}

В результате разбора ответа процедура возвращает такой результат:

Запрос: тверская нижний 12
Результаты запроса: Регион: [Нижегородская обл][Тверская обл].
Найдено уникальных почт.индексов - 2.
Адресов - 3.

Адрес

Индекс

Тверская обл, Старицкий р-н, деревня Нижний Спасс, д 12

171372

Тверская обл, Старицкий р-н, деревня Нижний Спасс, д 12 стр 12

171372

г Нижний Новгород, ул Тверская, д 12

603105

Примечание. В процедуре парсинга выводиться только три поля Адрес, Индекс, Регион.

В ответе сервиса – по одному адресу – более 70 полей, можно получить максимально подробную информацию по каждому адресу, включая значения всех классификаторов.

Процедура response - [dbo].[api_daDataAddress_response] - доступна по ссылке.

Платформа Falcon Space

Это снижение стоимости владения

за счет меньшего количества людей для поддержки

Это быстрое внесение изменений

по ходу эксплуатации программы

Это современный интерфейс

полная адаптация под мобильные устройства

Бесплатное обучение разработке на Falcon Space

Вы можете разрабатывать самостоятельно или сотрудничать с нами в плане веб-разработки на платформе Falcon Space.
Примечание

Google поиск по нашей документации