REST API позволяет с помощью простого запроса по HTTPS получить список городов и населенных пунктов используя базу данных Namaztimes.kz REST API позволяет получить данные в JSON, XML формате. Все данные в кодировке UTF-8.
Отправьте GET запрос на
https://namaztimes.kz/ru/api/cities[?id={state}][&type={format}]
API поддерживает запросы на HTTPS. Поддерживаемые форматы: JSON, XML.
В {state} можно указывать один id области, региона. Cписок областей, регионов можно взять тут
В {format} можно указывать формат передачи данных xml, json. Если {format} не указан, то формат автоматически становится json и добавляется функция console.dir.
Поэтому обязательно фильтруйте запросы от поисковых ботов. Это можно сделать простейшим регулярным выражением, вида:
$is_bot = preg_match(
"~(Google|Yahoo|Rambler|Bot|Yandex|Spider|Snoopy|Crawler|Finder|Mail|curl)~i",
$_SERVER['HTTP_USER_AGENT']
);
$geo = !$is_bot ? json_decode(file_get_contents('https://namaztimes.kz/ru/api/cities[?id={state}][&type={format}]'), true) : [];
var_dump($geo);
Также следует кэшировать результаты запросов для пользователей, чтобы при посещении пользователем 100 страниц сайта, не делать 100 запросов к API.
Результат обращения к API в JSON
//GET https://namaztimes.kz/ru/api/cities?id=almaty&type=json
{
8408: "Алматы",
8409: "Баканас",
8410: "Бирлик",
...
74900: "Кеген",
74901: "Жаркент"
}
Результат обращения к API в XML
//GET https://namaztimes.kz/ru/api/cities?id=almaty&type=xml
<response>
<city>
<id>8408</id>
<name>Алматы</name>
</city>
<city>
<id>8409</id>
<name>Баканас</name>
</city>
<city>
<id>8410</id>
<name>Бирлик</name>
</city>
...
<city>
<id>74900</id>
<name>Кеген</name>
</city>
<city>
<id>74901</id>
<name>Жаркент</name>
</city>
</response>
Описание полученных результатов обращения к API в JSON.
city_id: name
city_id - Идентификатор города.
name - Имя города.
Описание полученных результатов обращения к API в XML.
response->city->id - Идентификатор города.
response->city->name - Имя города.
GET https://namaztimes.kz/ru/api/cities?id=almaty&type=json
Выводит информацию городов и населенных пунктов области, региона с {state} = almaty. То есть Алматинская область в формате JSON.
Обработка результата обращения к API в JSON,XML вызов городов и населенных пунктов для области {state} = almaty
//PHP JSON
$json = file_get_contents(
'https://namaztimes.kz/ru/api/cities?id=almaty&type=json'
);
$json = json_decode($json,true);
print_r($json);
// PHP XML
$xml = simplexml_load_file(
'https://namaztimes.kz/ru/api/cities?id=almaty&type=json'
);
$xml = json_encode($xml);
$xml = json_decode($xml,true);
$xml = $xml['city'];
$data = [];
foreach ($xml as $item){
$data[$item['id']]= $item['name'];
}
unset($xml);
print_r($data);
//PHP JSON
Array
(
[8408] => Алматы
[8409] => Баканас
[8410] => Бирлик
...
[74900] => Кеген
[74901] => Жаркент
)
//PHP XML
Array
(
[8408] => Алматы
[8409] => Баканас
[8410] => Бирлик
...
[74900] => Кеген
[74901] => Жаркент
)