Musisz wiedzieć, czy API REST dzwonisz podpór GETlub POSTlub obu tych metod. Poniższy kod jest dla mnie odpowiedni, dzwonię do własnego interfejsu API usługi sieci Web, więc już wiem, co API przyjmuje i co zwróci. Obsługuje obie metody GETi POSTmetody, więc mniej wrażliwe informacje trafiają do URL (GET), a informacje takie jak nazwa użytkownika i hasło są przesyłane jako POSTzmienne. Ponadto wszystko przechodzi przez HTTPSpołączenie.
Wewnątrz kodu API koduję tablicę, którą chcę przywrócić do formatu json, a następnie po prostu używam polecenia PHP, echo $my_json_variableaby ten łańcuch json był dostępny dla klienta.
Jak widać, mój interfejs API zwraca dane JSON, ale musisz wiedzieć (lub spojrzeć na zwrócone dane, aby dowiedzieć się), w jakim formacie znajduje się odpowiedź z interfejsu API.
Oto jak łączę się z API od strony klienta:
$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;
}
BTW, próbowałem również użyć file_get_contents()metody, jak sugerowali niektórzy użytkownicy tutaj, ale to nie działa dobrze dla mnie. Odkryłem, że curlmetoda jest szybsza i bardziej niezawodna.