Curl клиент modx
Встроенный curl клиент для отправки запросов на сторонние сервисы (RESTful и другие).
Так как все чаще используются сторонние сервисы в повседневной разработке сайтов, для этих целей в modx есть встроенный клиент, с помощью которого можно отправлять запросы:
За подробней информации о всех возможностях класса смотрите файл:
Так как все чаще используются сторонние сервисы в повседневной разработке сайтов, для этих целей в modx есть встроенный клиент, с помощью которого можно отправлять запросы:
/* @var modRest $client */
$client = $modx->getService('rest', 'rest.modRest');
$response = $client->get('GET запрос');
или
$response = $client->post('POST запрос');
// Обработка полученных данных в json или xml формате и преобразование их в массив
$array = $response->process();
В заметке перечислены способы работы с клиентомОтправка запроса c параметрами
Записываем параметры которые хотим отправить нашему сервису$url = 'http://site.ru/rest/products';
$params = array('limit' => 100);
/* @var modRest $client */
$client = $modx->getService('rest', 'rest.modRest');
// $client->setOption('format','json'); // Формат полученных данных принимает json или xml (по умолчанию json) для
// $client->setOption('suppressSuffix','true'); // иначе при использовании format=json в конец url добавится http://site.ru/method.json
преобразования в массив
$response = $client->get($url, $params);
$data = $response->process(); // Вернет массив
Проверка доступности метода
Чтобы проверить существование метода или хотите узнать существование какой то страницы, мы можем проверить код статуса страница в переменной responseInfo:$url = 'http://site.ru/rest/mymethod';
/* @var modRest $client */
$client = $modx->getService('rest', 'rest.modRest');
$client->setOption('header', true); // Возвращать заголовок
$response = $client->get($url);
if (property_exists($response->responseInfo, 'scalar')) {
$code = $response->responseInfo->scalar;
}
echo $code; // 200 - метод доступен, 404 - метод или страница не существует
Проверка доступности сервиса
Иногда сервисы падают или слишком долго отвечают, для этого существует переменная responseError куда записывают ошибки.$url = 'http://site.ru/rest/mymethod';
/* @var modRest $client */
$client = $modx->getService('rest', 'rest.modRest');
$client->setOption('timeout', 15); // Устанавливаем время ожидания
$response = $client->get($url);
if ($response->responseError) {
echo $response->responseError; // печатаем сообщение об ошибке
}
Авторизация
Для авторизации в сервисе по средствам CURLOPT_HTTPHEADER, необходимо в опциях указать username и password$url = 'http://site.ru/rest/mymethod';
/* @var modRest $client */
$client = $modx->getService('rest', 'rest.modRest');
$client->setOption('username', 'Логин');
$client->setOption('password', 'пароль');
$response = $client->get($url);
if (property_exists($response->responseInfo, 'scalar')) {
$code = $response->responseInfo->scalar;
}
echo $code; // 200 - авторизованы, 403 - авторизация не пройдена
Чтение header
Чтобы сервис вернул заголовки, перед отправкой запроса нужно указать$client->setOption('header', true);
тогда в переменной $response->responseHeaders
мы увидем заголовки ответа от сервиса$url = 'http://site.ru/rest/mymethod';
/* @var modRest $client */
$client = $modx->getService('rest', 'rest.modRest');
$client->setOption('header', true);
$response = $client->get($url);
echo '<pre>';
print_r($response->responseHeaders); die;
Запись в header
Чтобы послать сервису наши парамеры в заголовках:$url = 'http://site.ru/rest/mymethod';
$headers= array(
'Content-type' => 'application/json', // Сообщаем сервису что хотим получить ответ в json формате
'Authorization' => 'OAuth НАШ TOKEN' // Авторизация через заголовки
);
// передаем наши заголовки сразу в класс
/* @var modRest $client */
$client = $this->modx->getService('rest', 'rest.modRest', array('headers' => $headers);
# или записываем заголовки в запрос
$response = $client->get($url, array(), $headers);
Для компонентов
Если возникает ошибка в консоле в виде:modRestClient::__construct is deprecated since version 2.3.0. Use the modRest classes instead.
То необходимо использовать:$client = $this->modx->getService('rest', 'rest.modRest');
так как modRestClient устаревшая функцияЗа подробней информации о всех возможностях класса смотрите файл:
core/model/modx/rest/modrest.class.php
Поблагодарить автора
Отправить деньги
Комментарии: 12
Молодец!
Круто
Красотища! Спасибо.
В избранное
Реализованы функции далеко не для всех методов developer.mozilla.org/ru/docs/Web/HTTP/Methods, хотя они не так часто нужны.
Еще пара функций в арсенале класса:
public function put($url, $parameters=array(), $headers=array())
public function delete($url, $parameters=array(), $headers=array()){
не стал про них писать, так как:хотя они не так часто нужны.
Это все равно не полный список
Перенес в офф документацию docs.modx.org/current/ru/extending-modx/services/modrest
Спасибо!
Спасибо!
о_О)) Крутяк)
Еще бы в низ меню съезжало вместе со скролом))
prntscr.com/ot12pi
prntscr.com/ot12pi
В работе
Добрый день, подскажите пожалуйста как отправить что либо в data-row
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.