Ви повинні знати , якщо REST API ви викликаєте підтримує GET
або POST
, або обидва методи. Код нижче - це те, що для мене працює, я називаю власний API веб-служби, тому я вже знаю, що приймає API і що він поверне. Він підтримує GET
і POST
методи, і методи, тому менш чутлива інформація переходить у URL (GET)
, а така інформація, як ім’я користувача та пароль, подається у вигляді POST
змінних. Також все переходить через HTTPS
зв’язок.
Всередині коду API я кодую масив, який хочу повернути у формат json, а потім просто використовую команду PHP, echo $my_json_variable
щоб зробити цю рядок json доступною для клієнта.
Отже, як ви бачите, мій API повертає дані json, але вам потрібно знати (або подивитися повернені дані, щоб дізнатися) у якому форматі відповідає відповідь API.
Ось як я підключаюся до API від клієнтської сторони:
$processed = FALSE;
$ERROR_MESSAGE = '';
// ************* Call API:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.myapi.com/api.php?format=json&action=subscribe&email=" . $email_to_subscribe);
curl_setopt($ch, CURLOPT_POST, 1);// set post data to true
curl_setopt($ch, CURLOPT_POSTFIELDS,"username=myname&password=mypass"); // post data
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$json = curl_exec($ch);
curl_close ($ch);
// returned json string will look like this: {"code":1,"data":"OK"}
// "code" may contain an error code and "data" may contain error string instead of "OK"
$obj = json_decode($json);
if ($obj->{'code'} == '1')
{
$processed = TRUE;
}else{
$ERROR_MESSAGE = $obj->{'data'};
}
...
if (!$processed && $ERROR_MESSAGE != '') {
echo $ERROR_MESSAGE;
}
До речі, я також намагався використовувати file_get_contents()
метод, як пропонують деякі користувачі тут, але це не добре працює для мене. Я з'ясував, що curl
метод є більш швидким і надійним.