Musisz wiedzieć, czy API REST dzwonisz podpór GET
lub POST
lub 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 GET
i POST
metody, więc mniej wrażliwe informacje trafiają do URL (GET)
, a informacje takie jak nazwa użytkownika i hasło są przesyłane jako POST
zmienne. Ponadto wszystko przechodzi przez HTTPS
połą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_variable
aby 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 curl
metoda jest szybsza i bardziej niezawodna.