Задать вопрос
artdimitrov
@artdimitrov
front-end dev

Как начать работать с REST api конкретного ПО?

Добрый день!
Есть на одной стороне сайт с Битрикс и на другой стороне Инфо-система "МИС Инфоклиника" с REST api
Как сделать запрос средствами PHP с сайта и получить данные из МИС?
Я понимаю что это очень и очень общий вопрос, но я даже не знаю с чего начать в этом разбираться

Не отправляйте в статьи "что такое HTTP" или "Как сделать RESTfull api" - никак не помогло
Что такое HTTP понятие есть, знание php есть, вопрос в том, как это связать, как получать данные
Нужно ли на стороне МИС разворачивать какой-то сервер, который будет давать ответы или все проще

Спрашиваю у тех, кто что-то подобное делал и четко понимает куда копать
  • Вопрос задан
  • 965 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
gobananas
@gobananas
finishhim.ru
1. Нет на сервере МИС разворачивать ничего не надо
2. На своём сайте делаете модуль или функцию (с Битрикс не работал не знаю как там) с curl или guzzle в ней делаете запрос к серверу МИС с нужными параметрами
curl_setopt($connection, CURLOPT_URL, "http://mis.ru/api/test.php?id=1");

3. Получаете ответ, разбираете его в зависимости от того в каком он формате
4. Данные полученные кладёте в БД или делаете с ними всё что хотите
5. Делаете через нужный промежуток времени такой же запрос или другой с другими параметрами. И всё.
Если с php знакомы то php.net/Curl вам поможет дальше надо смотреть доки API какие там методы к каким запросам, так сказать сложно.
Ответ написан
Использовать встроенный httpClient.

Пример:

/**
 * @param array $options Optional array with options:
 *		"redirect" bool Follow redirects (default true)
 *		"redirectMax" int Maximum number of redirects (default 5)
 *		"waitResponse" bool Wait for response or disconnect just after request (default true)
 *		"socketTimeout" int Connection timeout in seconds (default 30)
 *		"streamTimeout" int Stream reading timeout in seconds (default 60)
 *		"version" string HTTP version (HttpClient::HTTP_1_0, HttpClient::HTTP_1_1) (default "1.0")
 *		"proxyHost" string Proxy host name/address
 *		"proxyPort" int Proxy port number
 *		"proxyUser" string Proxy username
 *		"proxyPassword" string Proxy password
 *		"compress" bool Accept gzip encoding (default false)
 *		"charset" string Charset for body in POST and PUT
 *		"disableSslVerification" bool Pass true to disable ssl check.
 * 	All the options can be set separately with setters.
 */
$options = [
    'socketTimeout' => 5,
    'streamTimeout' => 15,
];

$httpClient = new \Bitrix\Main\Web\HttpClient($options);

// get-запрос
$response = $httpClient->get('http://site.ru/path/to/url/?query');

// post-запрос
$response = $httpClient->post('http://site.ru/path/to/url/?query', [
    'param1' => 'value1',
]);

// head-запрос
$response = $httpClient->head('http://site.ru/path/to/url/?query');

// возможные ошибки
$errors = $httpClient->getError();

// Статус ответа
$errors = $httpClient->getStatus();
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Используйте curl на стороне битрикса + документация API инфо-системы для создания верных запросов.
Это всё.
Ответ написан
Комментировать
@developer007
просто echo file_get_contents(ссылка с параметрами на скрипт, который json сгенерирует)
а дальше исходя из ответа парсить
ну если json формат то json_decode
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы