For the complete documentation index, see llms.txt. This page is also available as Markdown.

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 ?