Новая версия API v3.

в Новости .

Дорогие партнеры, для вашего удобства мы разработали и запустили третью версию API v3. 

Описания системы уже доступны на нашем сайте https://b2b-dynatone.ru/api

Если у вас будут какие-либо вопросы, пожелания или замечания по работе новой версии API, пожалуйста, обращайтесь к своему менеджеру. 

Также мы запустили дополнительный сервер для первичных запросов, чтобы можно было стабильно получать данные из разных регионов мира. В примерах мы используем хост в дата-центре на территории РФ https://ru1.apidnt.ru/v3/, но также можно использовать хост в ДЦ Хельсинки https://fn1.apidnt.ru/v3/

 

Главное отличие v3 – в использовании CDN для передачи данных. B связи с периодическими сложностями доступа к API Dynatone из различных регионов и в связи с перегруженностью, мы развернули передачу данных через Anycast CDN (content delivery network). Сеть состоит из 45 серверов на территории РФ и развернута на базе одного из крупнейших Российских провайдеров, что исключает блокировки и задержки (как это часто бывает с зарубежными операторами). CDN кроме серверов в РФ включает и сервера в других странах, что облегчит доступ к API Dynatone нашим партнерам за пределами РФ.


При программном получении данных важно иметь ввиду, что при запросе происходит редирект на нужный сервер сети. Для этого функция чтения файлов у вас должна поддерживать редирект. При программном обращении к API он вернет 302 ответ и адрес, на который надо перейти. Поэтому при программных запросах должен обрабатываться редирект. Если у вас возникнут сложности с обработкой редиректа, можно по-прежнему использовать API v2, для этого в URL надо поменять v3 на v2.

 

Вот как может выглядеть запрос на PHP

 

function get_file_curl($url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //  ВАЖНО: следовать редиректам
curl_setopt($ch, CURLOPT_MAXREDIRS, 5);         //  Безопасный лимит
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);   //  Если нет ответа 5 сек, то и не будет ждать, может временная ошибка в сети
   
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);

$data = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    if ($httpCode !== 200 || $data === false) {
        throw new Exception("Failed to get file (HTTP $httpCode): $url");
}
curl_close($ch);
    return $data;
}

423.745 milliseconds