Ви повинні знати , якщо 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метод є більш швидким і надійним.