Exemples PHP
Vue d'ensemble
Tous les exemples de code de cette section utilisent les classes suivantes.
La classe Request utilise cURL pour effectuer les requêtes à l'API.
La classe Response contient la réponse de l'API et les informations sur le code d'état renvoyé.
Classes Request et Response
class Request {
/**
* @var ressource
*/
protected $_request;
/**
* @var entier
*/
protected $_method;
/**
* @var chaîne
*/
protected $_url;
/**
* @var tableau
*/
protected $_headers = array(
'Content-type: application/json'
);
/**
* @var chaîne|tableau
*/
protected $_params;
/**
* @var objet Response
*/
protected $_reponse;
/**
* Constructeur
*
* @param chaîne $url
* @param chaîne $method
* @param tableau $params
*/
public function __construct($url, $method, $params = array()) {
$this->_url = $url;
// Définir la méthode
$this->_method = $method;
// Définir les paramètres
$this->_params = $params;
}
/**
* Déterminer la méthode de la requête
*
* @param chaîne $method
*/
private function setMethod() {
switch($this->_method) {
case 'GET':
break;
case 'POST':
curl_setopt($this->_request, CURLOPT_POST, 1);
break;
case 'PUT':
curl_setopt($this->_request, CURLOPT_CUSTOMREQUEST, 'PUT');
break;
case 'DELETE':
curl_setopt($this->_request, CURLOPT_CUSTOMREQUEST, 'DELETE');
break;
}
}
/**
* Ajouter l'en-tête d'autorisation
*
* @param chaîne $type
* @param chaîne $token
*/
public function setAuthorizationHeader($type, $token) {
$authorization = $type . ' ' . $token;
$this->_headers[] = 'Authorization: ' . $authorization;
}
/**
* Ajouter un corps à la requête
*/
private function addBody() {
if($this->_method != 'GET' && empty($this->_params) == false) {
if(is_array($this->_params)) {
// Encoder le tableau en JSON
$this->_params = json_encode($this->_params);
}
curl_setopt($this->_request, CURLOPT_POSTFIELDS, $this->_params);
// Ajouter un en-tête Content-Length
$this->_headers[] = 'Content-length: ' . strlen($this->_params);
}
}
/**
* Ajouter une chaîne de requête à la requête
*/
private function addQueryString() {
if($this->_method == 'GET' && is_array($this->_params) && count($this->_params) > 0) {
$query_string = '?';
foreach($this->_params as $param => $value) {
$query_string = $query_string . $param . '=' . $value . '&';
}
trim($query_string, '&');
$this->_url = $this->_url . $query_string;
}
else {
if(is_array($this->_params) && count($this->_params) > 0 && strpos($this->_url, '{') !== false) {
// Faire correspondre les paramètres avec l'URL
foreach($this->_params as $param => $value) {
$this->_url = preg_replace('/{' . $param . '}/', $value, $this->_url);
}
}
}
}
/**
* Envoyer la requête
*/
public function send() {
// Initialiser la requête cURL
$this->_request = curl_init();
// Retourner la réponse sous forme de chaîne
curl_setopt($this->_request, CURLOPT_RETURNTRANSFER, 1);
// Ajouter une chaîne de requête
$this->addQueryString();
// Définir l'URL
curl_setopt($this->_request, CURLOPT_URL, $this->_url);
// Définir la méthode de requête
$this->setMethod();
// Ajouter un corps
$this->addBody();
if(empty($this->_headers) == false) {
// Définir les en-têtes
curl_setopt($this->_request, CURLOPT_HTTPHEADER, $this->_headers);
}
// Désactiver les vérifications SSL
curl_setopt($this->_request, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($this->_request, CURLOPT_SSL_VERIFYHOST, false);
// Envoyer la requête et stocker le corps
$this->_response = new Response(curl_exec($this->_request));
// Définir le code d'état
$this->_response->setStatusCode(curl_getinfo($this->_request, CURLINFO_HTTP_CODE));
// Fermer la connexion
curl_close($this->_request);
}
/**
* Obtenir la réponse
*
* @return objet
*/
public function getResponse() {
return $this->_response;
}
}
class Response {
/**
* @var tableau
*/
protected $_reason_phrases = array(
// Informatif 1xx
100 => "Continuer",
101 => "Changement de protocole",
// Succès 2xx
200 => "OK",
201 => "Créé",
202 => "Accepté",
203 => "Information non autoritative",
204 => "Aucun contenu",
205 => "Réinitialiser le contenu",
206 => "Contenu partiel",
// Redirection 3xx
300 => "Choix multiples",
301 => "Déplacé définitivement",
302 => "Trouvé",
303 => "Voir ailleurs",
304 => "Non modifié",
305 => "Utiliser un proxy",
306 => "(Inutilisé)",
307 => "Redirection temporaire",
// Erreur client 4xx
400 => "Requête incorrecte",
401 => "Non autorisé",
402 => "Paiement requis",
403 => "Accès interdit",
404 => "Introuvable",
405 => "Méthode non autorisée",
406 => "Non acceptable",
407 => "Authentification proxy requise",
408 => "Délai d'attente de la requête",
409 => "Conflit",
410 => "Disparu",
411 => "Longueur requise",
412 => "Précondition échouée",
413 => "Entité de requête trop grande",
414 => "URI de requête trop longue",
415 => "Type de média non pris en charge",
416 => "Plage demandée non satisfaisable",
417 => "Échec de l'attente",
// Erreur serveur 5xx
500 => "Erreur interne du serveur",
501 => "Non implémenté",
502 => "Passerelle incorrecte",
503 => "Service indisponible",
504 => "Délai d'attente de la passerelle",
505 => "Version HTTP non prise en charge"
);
/**
* @var entier
*/
protected $_status_code;
/**
* @var chaîne
*/
protected $_body;
/**
* Constructeur
*
* @param chaîne $body
*/
public function __construct($body) {
$this->_body = $body;
}
/**
* Constructeur
*
* @param chaîne $status_code
*/
public function setStatusCode($status_code) {
$this->_status_code = $status_code;
}
/**
* Obtenir le code d'état
*
* @return entier
*/
public function getStatusCode() {
return $this->_status_code;
}
/**
* Obtenir le corps
*
* @return chaîne
*/
public function getBody() {
return $this->_body;
}
/**
* Obtenir le corps décodé en JSON
*
* @return objet|null
*/
public function getBodyDecoded() {
return json_decode($this->_body);
}
/**
* Obtenir la phrase de raison
*
* @return chaîne|booléen
*/
public function getReasonPhrase() {
if(array_key_exists($this->_status_code, $this->_reason_phrases)) {
return $this->_reason_phrases[$this->_status_code];
}
else {
return false;
}
}
}Connexion
Il existe deux options pour demander la connexion route :
avec un nom d'utilisateur et un mot de passe
avec un jeton API (jeton d'accès)
Exemple de connexion avec les paramètres nom d'utilisateur et mot de passe.
<?php
// Inclure les classes Request et Response
$url = 'https://api.example.com/v2/login';
$params = array(
'username' => 'sample_username',
'password' => 'sample_password'
);
// Créer un nouvel objet Request
$request = new Request($url, 'POST', $params);
// Envoyer la requête
$request->send();
// Obtenir l'objet Response
$response = $request->getResponse();
if($response->getStatusCode() == 200) {
// Récupérer les détails du jeton de session
$token = $response->getBodyDecoded();
print_r($token);
}
else {
echo $response->getStatusCode() . PHP_EOL;
echo $response->getReasonPhrase() . PHP_EOL;
echo $response->getBody() . PHP_EOL;
}
?>Exemple de connexion avec un jeton API (jeton d'accès)
Authentification
Chaque requête liée au contenu utilisateur nécessite un Autorisation en-tête à définir, avec une valeur contenant le type de jeton et le jeton de session reçu de la requête de connexion à l'API.
Une requête valide /login requête à l'API renverra la charge utile JSON suivante.
Le Jeton de session doit être inclus dans toutes les requêtes ultérieures liées au contenu utilisateur vers l'API.
Le type doit être ajouté au début du jeton, séparé par un seul espace.
Le expires_in est la durée en secondes pendant laquelle le jeton sera valide. Une fois ce délai expiré, un nouveau jeton devra être obtenu via la requête /login.
Exemple d'obtention et de définition de l'en-tête d'autorisation avec nom d'utilisateur et mot de passe
Exemple d'obtention et de définition de l'en-tête d'autorisation avec un jeton API
Collections
Voici un exemple de requête pour obtenir la Navigateurs collection.
Statistiques
Voici un exemple de requête d'annonceur pour statistics/a/date.
Dans le cas où additional_group_by la valeur est définie, la requête sera regroupée par le champ principal de la route et le ou les champs supplémentaires.
Exemple de statistiques par date filtrées par l'ID de campagne 1234.
Exemple de statistiques par date avec regroupement supplémentaire par campagne.
post /statistics/a/global
Obtenir les statistiques globales de l'annonceur
Exemple 1 de statistiques globales
Exemple de requête pour les statistiques globales.
Seul le group_by paramètre est obligatoire. Les valeurs par défaut des autres paramètres se trouvent Ici.
Veuillez noter que les routes de statistiques globales (statistics/a/global, statistics/p/global) ont un format de paramètres différent.
Exemple 2 de statistiques globales
Obtenir les statistiques par date, y compris les totaux cumulés.
Exemple 3 de statistiques globales
Obtenir les statistiques par campagne et par pays filtrées par une date spécifique, triées par impressions.
Exemple 4 de statistiques globales
Obtenir les statistiques des éditeurs par zone et par pays filtrées par un système d'exploitation spécifique.
Mis à jour
Ce contenu vous a-t-il été utile ?

