Exemple de utilizare a API: Diferență între versiuni
Jump to navigation
Jump to search
Ikbot (Discuție | contribuții) |
|||
(Nu s-au afișat 5 versiuni intermediare efectuate de un alt utilizator) | |||
Linia 1: | Linia 1: | ||
+ | <span data-link_translate_he_title="דוגמאות לשימוש ה-API" data-link_translate_he_url="%D7%93%D7%95%D7%92%D7%9E%D7%90%D7%95%D7%AA+%D7%9C%D7%A9%D7%99%D7%9E%D7%95%D7%A9+%D7%94-API"></span>[[:he:דוגמאות לשימוש ה-API]][[he:דוגמאות לשימוש ה-API]] | ||
+ | <span data-link_translate_ja_title="API を使用しての例" data-link_translate_ja_url="API+%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%AE%E4%BE%8B"></span>[[:ja:API を使用しての例]][[ja:API を使用しての例]] | ||
+ | <span data-link_translate_ar_title="أمثلة لاستخدام API" data-link_translate_ar_url="%D8%A3%D9%85%D8%AB%D9%84%D8%A9+%D9%84%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85+API"></span>[[:ar:أمثلة لاستخدام API]][[ar:أمثلة لاستخدام API]] | ||
+ | <span data-link_translate_zh_title="使用该 API 的示例" data-link_translate_zh_url="%E4%BD%BF%E7%94%A8%E8%AF%A5+API+%E7%9A%84%E7%A4%BA%E4%BE%8B"></span>[[:zh:使用该 API 的示例]][[zh:使用该 API 的示例]] | ||
+ | <span data-link_translate_de_title="Beispiele für die Verwendung der API" data-link_translate_de_url="Beispiele+f%C3%BCr+die+Verwendung+der+API"></span>[[:de:Beispiele für die Verwendung der API]][[de:Beispiele für die Verwendung der API]] | ||
<span data-link_translate_nl_title="Voorbeelden van het gebruik van de API" data-link_translate_nl_url="Voorbeelden+van+het+gebruik+van+de+API"></span>[[:nl:Voorbeelden van het gebruik van de API]][[nl:Voorbeelden van het gebruik van de API]] | <span data-link_translate_nl_title="Voorbeelden van het gebruik van de API" data-link_translate_nl_url="Voorbeelden+van+het+gebruik+van+de+API"></span>[[:nl:Voorbeelden van het gebruik van de API]][[nl:Voorbeelden van het gebruik van de API]] | ||
<span data-link_translate_it_title="Esempi di utilizzo dell'API" data-link_translate_it_url="Esempi+di+utilizzo+dell%27API"></span>[[:it:Esempi di utilizzo dell'API]][[it:Esempi di utilizzo dell'API]] | <span data-link_translate_it_title="Esempi di utilizzo dell'API" data-link_translate_it_url="Esempi+di+utilizzo+dell%27API"></span>[[:it:Esempi di utilizzo dell'API]][[it:Esempi di utilizzo dell'API]] | ||
Linia 11: | Linia 16: | ||
Acest articol este rezultatul unei traduceri automate efectuate de către software-ul. Puteți vizualiza sursa articol [[:fr:Exemples d'utilisation de l'API|aici]].<br /><span data-translate="fr"></span> | Acest articol este rezultatul unei traduceri automate efectuate de către software-ul. Puteți vizualiza sursa articol [[:fr:Exemples d'utilisation de l'API|aici]].<br /><span data-translate="fr"></span> | ||
− | + | {{#seo: | |
− | + | |title=Exemple de utilizare a API | |
− | + | |title_mode=append | |
− | + | |keywords=these,are,your,keywords | |
− | + | |description=Exemple de utilizare a API | |
− | + | |image=Uploaded_file.png | |
− | + | |image_alt=Wiki Logo | |
− | + | }} | |
− | |||
− | |||
<!-- Début de l'article. Placez votre texte ci-après et n'hésitez pas à personnaliser les chapitres selon votre besoin --> | <!-- Début de l'article. Placez votre texte ci-après et n'hésitez pas à personnaliser les chapitres selon votre besoin --> | ||
− | |||
− | |||
==Introducerea == <!--T:1--> | ==Introducerea == <!--T:1--> |
Versiunea curentă din 28 octombrie 2021 16:14
he:דוגמאות לשימוש ה-API
ja:API を使用しての例
ar:أمثلة لاستخدام API
zh:使用该 API 的示例
de:Beispiele für die Verwendung der API
nl:Voorbeelden van het gebruik van de API
it:Esempi di utilizzo dell'API
pt:Exemplos de como usar a API
es:Ejemplos de uso de la API
en:Examples of using the API
ru:Примеры использования API
pl:Przykłady użycia interfejsu API
fr:Exemples d'utilisation de l'API
Acest articol este rezultatul unei traduceri automate efectuate de către software-ul. Puteți vizualiza sursa articol aici.
Introducerea
Cum să utilizaţi API prin câteva exemple concrete şi funcţionale.
Funcţii pentru exemplele
// Chemin local vers la clé publique téléchargée sur http://api.ikoula.com/downloads/Ikoula.API.RSAKeyPub.pem
define('API_PUB_KEY_PATH', dirname(__FILE__) . '/Ikoula.API.RSAKeyPub.pem');
<!--T:3-->
// Fonction de chiffrement du mot de passe via la clé publique Ikoula
function opensslEncryptPublic($password)
{
// Vérification de la présence de la clé publique
if(file_exists(API_PUB_KEY_PATH))
{
if(!empty($password))
{
// on récupère la clé public
$publicKey = openssl_pkey_get_public('file://'.realpath(API_PUB_KEY_PATH));
<!--T:4-->
// S'il n'y as pas eu d'erreurs lors de la récupération de la clé publique, on continue
if ($publicKey !== FALSE)
{
// Si chiffrement clé publique OK
if(openssl_public_encrypt($password, $crypted, $publicKey) === TRUE)
{
// Renvoie du mot de passe crypté
return $crypted;
}
else
{
return NULL;
}
}
else
return NULL;
}
else
return NULL;
}
else
{
echo("Erreur - la clé publique n'est pas présente.\n");
return NULL;
}
}
<!--T:5-->
// Fontction de création de la signature en fonction des paramètres présents
function createSignature($params=array())
{
$signature = null;
<!--T:6-->
// Si il y a au moins un paramètre
if (count($params) > 0)
{
//debug('create signature');
//debug($params);
// Triage des paramètres dans le sens croissant
ksort($params);
// Encodage des paramètres
$query = http_build_query($params);
<!--T:7-->
// Encodage des signes "plus "+"
$query = str_replace("+", "%20", $query);
<!--T:8-->
// Transformation de la chaîne de caractères en minuscule
$query = strtolower($query);
<!--T:9-->
$public_key = "";
// Si le fichier existe, on va récupérer la clé
if (file_exists(API_PUB_KEY_PATH))
{
$public_key = trim(
str_replace(
array("\n", '-----BEGIN PUBLIC KEY-----','-----END PUBLIC KEY-----'),
array('', '', ''),
file_get_contents(API_PUB_KEY_PATH)
)
);
}
<!--T:10-->
// Hashage des paramètres
$hash = hash_hmac("SHA1", $query, $public_key, true);
<!--T:11-->
// Encodage en base64
$signature = base64_encode($hash);
}
<!--T:12-->
return $signature;
}
<!--T:13-->
// Fonction facilitant l'envoie des requêtes vers l'API Ikoula
function send_request ($rest, $url_param, $params=array())
{
// initialisation de CURL
$ch = curl_init();
if($ch)
{
// Si on a des info on utilise l'api REST sinon on utilise l'api standard (WebService)
if($rest)
$url = "https://api.ikoula.com/rest/" . $url_param;
else
$url = "https://api.ikoula.com/?r=" . $url_param;
<!--T:14-->
// si on est en REST on rajoute le type d'appel (POST,DELETE,PUT,GET,...) sinon on passe en POST
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, ($rest)?$rest:"POST");
// Si il y a des paramètres on les rajoute dans la requête
if(is_array($params) && count($params) > 0)
{
$params_str = http_build_query($params);
}
if($rest=='POST')
{
// on rentre le nom de paramètre présent dans la requête
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, $params_str);
}
else
{
$url .= (strpos($url,'?') === false ? '?' : '&').$params_str;
}
// On ajoute l'url
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
// on vire les en-tête HTTP pour avoir directement le retour
curl_setopt($ch, CURLOPT_HEADER, false);
// exécution de la requête
$data = curl_exec($ch);
// fermeture de l'objet
curl_close($ch);
<!--T:15-->
// retourne la réponse
return($data);
}
return null;
}
API apeluri
//login
$login = 'mail@test.com';
//on crypte le mot de passe
$crypted_password = base64_encode(opensslEncryptPublic('MOT_DE_PASSE_A_CRYPTER'));
<!--T:17-->
//liste des VM - retour en JSON
<!--T:18-->
//liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)
$parameters = array('login' => $login, 'crypted_password' => $crypted_password, 'format' => 'json');
//on génère la signature
$signature = createSignature($parameters);
//on ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API
$parameters['signature'] = $signature;
//on fait l'appel API
$data = send_request(false,'wsflex/vmlist',$parameters);
print_r($data); //appel WebService
$data2 = send_request('GET','vm/list',$parameters);
print_r($data2); //appel REST
<!--T:19-->
//informations d'une VM - retour en XML
<!--T:20-->
//liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature)
$parameters = array('login' => $login, 'crypted_password' => $crypted_password, 'format' => 'xml', 'subscr_id' => 12345);
//on génère la signature
$signature = createSignature($parameters);
//on ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API
$parameters['signature'] = $signature;
//on fait l'appel API
$data = send_request(false,'wsflex/vminfo',$parameters);
print_r($data); //appel WebService
$data2 = send_request('GET','vm/'.$parameters['subscr_id'],$parameters);
print_r($data2); //appel REST
Erorile comune
- Permisiune refuzată
- Înseamnă că utilizatorul utilizate în API-ul nu are dreptul de a accesa informaţiile solicitate sau pentru a efectua acţiunea dorită
- Imposibil de decriptat parola
- Înseamnă că parametrul crypted_password a fost prost criptate sau corupt
- Acreditări nevalide
- Înseamnă că de autentificare a eşuat, şi că utilizatorul nu este recunoscut atât
- Semnătură validă sau lipsește
- Înseamnă că semnătura nu este prezent în parametrii primită de la API, sau că este nevalid
Alte lifturi de erori sunt posibile, dar va fi contextuală în funcţie de funcţionalitatea dorită.
Acest articol părea să fie util ?
0
Enable comment auto-refresher