В PHP у вас может быть что-то вроде этого:
// EDIT: only need to use urlencode() on user supplied variables
//$url = urlencode("http://xyz.com/api?apikey=foo&v1=bar&v2=baz");
$url = "http://xyz.com/api?apikey=foo&v1=bar&v2=baz";
$response = file_get_contents($url);
$response
будет содержать строку того, что xyz.com
выведено при доступе к $url
(это то, что вы увидели бы, если бы вы посетили $url
напрямую).
Ваша следующая работа будет заключаться в разборе $response
на основе его структуры данных (например, XML, JSON и т. Д.), Чтобы его можно было использовать в остальной части вашего кода.
Существует несколько библиотек PHP для анализа XML или JSON. Лично я предпочитаю использовать SimpleXMLElement
и json_decode()
, которые включены в PHP 5> = 5.2.0.
В зависимости от API, он, вероятно, отправит вам некую структуру кода ошибки / структуры ответа, если не поймет запрос $url
, который можно проверить после анализа ответа.
Если $response
возвращает false, то, как правило, произошла ошибка связи с $url
.
Я обнаружил, что интуитивно понятный способ думать об этих XHR
запросах состоит в том, что вы передаете аргументы (GET
параметры) в функцию (API URL). А ответ от URL API похож на оператор возврата из функции.
UPDATE:
Пример API для Groupon , как предложено OP в комментариях:
$apikey = "client_id=abcd1234567890";
$division = "division_id=chicago";
$url = "http://api.groupon.com/v2/deals?" . implode("&", array($apikey, $division));
$response = file_get_contents($url);
$deals = json_decode($response, true);
foreach($deals['deals'] as $deal){
$format = 'Deal: <a href="%s">%s</a><br/>';
echo sprintf( $format, $deal['dealURL'], $deal['announcementTitle']);
}
Приведенный выше код распечатывает список всех названий сделок и URL-адресов для района Чикаго. Если вы посмотрите на разделы Sample JSON Response
на странице API Groupon, вы увидите всю структуру данных, которая будет отображена в ассоциативный массив $deals
.
.
Если какой-либо из GET
параметров API предоставлен пользователем (например, из веб-формы), вам нужно будет выполнить что-то вроде $division = "division_id=" . urlencode($user_input);
.