Vous aurez besoin de savoir si l'API REST que vous appelez des supports GET
ou POST
, ou les deux méthodes. Le code ci-dessous est quelque chose qui fonctionne pour moi, j'appelle ma propre API de service Web, donc je sais déjà ce que l'API prend et ce qu'elle renverra. Il prend en charge les méthodes GET
et POST
, de sorte que les informations moins sensibles entrent dans le URL (GET)
, et les informations telles que le nom d'utilisateur et le mot de passe sont soumises en tant que POST
variables. De plus, tout passe par la HTTPS
connexion.
Dans le code API, j'encode un tableau que je veux retourner au format json, puis j'utilise simplement la commande PHP echo $my_json_variable
pour rendre cette chaîne json disponible pour le client.
Donc, comme vous pouvez le voir, mon API renvoie des données json, mais vous devez savoir (ou regarder les données renvoyées pour savoir) dans quel format est la réponse de l'API.
Voici comment je me connecte à l'API du côté client:
$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, j'ai également essayé d'utiliser la file_get_contents()
méthode comme certains des utilisateurs ici l'ont suggéré, mais cela ne fonctionne pas bien pour moi. J'ai découvert que la curl
méthode était plus rapide et plus fiable.