Как взаимодействовать с веб-API XML / JSON? - PullRequest
7 голосов
/ 31 марта 2011

Я изучаю php / xml / json и все остальное самостоятельно, и я кое-что изучал через API. У них есть документация, но я до сих пор не понимаю, как работает API. Они дают вам ссылку GET и ключ API, я знаю, что вы должны поместить ключ API в ссылку запроса

Как мне позвонить по этой ссылке? И что это значит, когда он дает вам образец ответа?

Будет ли ответ получен, если вы правильно ответили?

Я немного уверен в себе?

Спасибо

1 Ответ

16 голосов
/ 31 марта 2011

В 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);.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...