Примеры обращения к API из PHP¶
Ниже приведен пример функции на PHP, которую можно использовать для обращения к нашему API
/**
* Функция для обращения к API NetAngels.
*
* Принимаемые параметры:
* $resource: URL ресурса относительно базового адреса API
* (например, "dnszone/30/"). Требуется завершающий слеш
* $method: HTTP-метод для выполнения операции. Строка, которая может
* принимать одно из значений: "GET", "POST", "PUT", "DELETE".
* $login: логин для авторизации (строка вида "uXXXX")
* $password: пароль для авторизации (строка)
* $args: массив параметров, принимаемый в случае создания или
* изменения объекта. Например, для создания зоны DNS:
* array("name" => "example.com", "ttl" => 7200).
*
* В случае успешного завершения функция возвращает разобранный
* JSON-ответ. В случае ошибки возбуждается исключение
* /
define("BASE_URL", "https://panel.netangels.ru/api/v1/");
function api_request($resource, $method, $login, $password, $args=null) {
$full_url = BASE_URL . "$resource";
$options = array(
CURLOPT_URL => $full_url,
CURLOPT_USERPWD => "$login:$password",
CURLOPT_HTTPHEADER => array('Content-Type: application/json',
'Accept: application/json'),
CURLOPT_CUSTOMREQUEST => $method,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_USERAGENT => "NetAngels API client 0.1"
);
if ($args) {
$json_args = json_encode($args);
$options[CURLOPT_POSTFIELDS] = $json_args;
}
$ch = curl_init();
curl_setopt_array($ch, $options);
$content = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ( $status > 399 ) {
throw new Exception("Exception $status: $content");
}
return json_decode($content);
}
Используя такую функцию, вы можете выполнять любые запросы к API. Примеры таких запросов
Получить список всех зон DNS
$res = api_request("dnszone/", "GET", $login, $password);
foreach($res->objects as $dnszone) {
printf("Зона DNS [%d]: %s\n", $dnszone->id, $dnszone->name);
}
Добавить новую зону DNS
В случае возникновения ошибки (например, если такая зона DNS уже существует) будет вызвано исключение, которое перехватывается и выводится в браузер или в консоль.
$dnszone = array("name" => "foobarbaz.ru", "ttl" => 4*60*60);
try {
$res = api_request("dnszone/", "POST", $login, $password, $dnszone);
} catch (Exception $e) {
echo $e->getMessage() . "\n";
}
Обновить TTL для выбранной зоны DNS
$res = api_request("dnszone/?name=foobarbaz.ru", "GET", $login, $password);
$zoneId = $res->objects[0]->id;
$putData = array("ttl" => 2 * 60 * 60);
$res = api_request("dnszone/" . $zoneId . "/", "PUT", $login, $password, $putData);
Найти и удалить зону DNS
$res = api_request("dnszone/?name=foobarbaz.ru", "GET", $login, $password);
$zoneId = $res->objects[0]->id;
$res = api_request("dnszone/" . $zoneId . "/", "DELETE", $login, $password);