L'API HTTP

Le transporteur

par Julien Maury / jmau111 / développeur

Une API ?


  • ressources via URLs
  • lecture et/ou écriture
  • méthodes et fonctions

Dialogue, remote ?



    POST /1/statuses/update.json?include_entities=true HTTP/1.1
    Accept: */*
    Connection: close
    User-Agent: OAuth gem v0.4.4
    Content-Type: application/x-www-form-urlencoded
    Authorization: 
            OAuth oauth_consumer_key="xvz1evFS4wEEPTGEFPHBog", 
                  oauth_nonce="kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg", 
                  oauth_signature="tnnArxj06cWHq44gCs1OSKk%2FjLY%3D", 
                  oauth_signature_method="HMAC-SHA1", 
                  oauth_timestamp="1318622958", 
                  oauth_token="370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb", 
                  oauth_version="1.0"
    Content-Length: 76
    Host: api.twitter.com
    
    status=Hello%20Ladies%20%2b%20Gentlemen%2c%20a%20signed%20OAuth%20request%21
                            

Le transport en PHP

  1. La classe HTTPRequest de PHP
  2. cURL
  3. streams
  4. fopen
  5. fsocket

Les problèmes


  • un serveur, une config
  • perf / plantage
  • bonnes pratiques

Le dév en express

  • turbo!
  • Le dév simplifié
  • succès => tableau, échec => WP_error

Les outils de l'API


Déboguer l'API HTTP



    add_action( 'http_api_debug', 'viper_http_api_debug', 10, 5 );
    function viper_http_api_debug( $response, $type, $class, $args, $url ) {
    
        error_log( 'Request URL: ' . var_export( $url, true ) );
        error_log( 'Request Args: ' . var_export( $args, true ) );
        error_log( 'Request Response : ' . var_export( $response, true ) );
    }
                        

Source

Démo

Build Status
WP JSON REST API

Le cache !

  • quotas APIs / performances
  • transients / CRON / TLC