Qu'est ce que l'architecture REST ?

L'architecture REST n'est pas un protocole en soi, ni une technologie, mais une "philosophie" de l'utilisation du Web. Le protocole utilisé ici est simplement HTTP avec ses méthodes (GET, POST et les autres…). Cette philosophie estime qu'il n'est, dans bien des cas, pas nécessaire de faire appel aux couches d'abstraction proposées par SOAP et XML-RPC, et que les méthodes de HTTP, combinées avec de bonne URIs, suffisent amplement dans la majorité des cas.

Voici un exemple de requête de type REST, tel qu'utilisée par le service Flickr :

http://www.flickr.com/services/rest/?method=flickr.echo &name=value

Et la réponse :

<?xml version="1.0" encoding="utf-8" ?>
<rsp stat="ok">
  <method>flickr.test.echo</method>
  <format>rest</format>
  <foo>bar</foo>
  <api_key>cc5eb7cce4f7e5bb39c259a63e6e9215</api_key>
</rsp>

Exemple d'utilisation de l'API

Amazon propose ses services web pour plusieurs de ses sites :

  • US (amazon.com)
  • UK (amazon.co.uk)
  • Germany (amazon.de)
  • Japan (amazon.co.jp)
  • France (amazon.fr)
  • Canada (amazon.ca)

Pour pouvoir utiliser les services web d'amazon, il est nécessaire de s'inscrire sur le site en tant que partenaire. L'inscription est gratuite.

Dans notre exemple, nous allons demander à Amazon.fr de nous retourner tous les livres concernant PHP et CSS.

Dans un premier temps, nous allons construire notre url pour interroger le site d'amazon. [Id] est à remplacer par votre code développeur.

$url     = "http://webservices.amazon.fr/onca/xml?Service=AWSECommerceService&SubscriptionId=[Id]";

Puis, nous allons mettre nos critères de recherche dans cette url :

  • SearchIndex=Books : précise que nous recherchons un livre
  • ItemPage=1 : précise que nous voulons les dix premiers résultats
  • ResponseGroup=Medium : précise que l'on souhaite un niveau de description du produit moyen
  • Keywords=Css%20PHP : précise les mots clés recherchés
$url    .= "&Operation=ItemSearch&SearchIndex=Books&ItemPage=1&ResponseGroup=Medium&Keywords=Css%20PHP";

Ensuite, nous allons récupérer le xml renvoyé par Amazon.

$contenu = file_get_contents($url);

Et finalement, nous chargeons ce xml à l'aide de SimpleXml dans une variable.

$xml     = simplexml_load_string($contenu);

Pour accéder à un champs, il suffit d'accéder à un élément SimpleXML par l'intermédiaire des champs de l'objet SimpleXML. Ici, nous accédons, par exemple, au nombre de résultat retourné par notre recherche.

$xml->Items->TotalResults

Voici les bases pour commencer à utiliser les services web d'Amazon. Il est également possible d'effectuer des commandes (et de récupérer des commissions) à partir de ces services web. Pour plus de renseignements sur l'API d'Amazon, http://docs.amazonwebservices.com/AWSEcommerceService/2005-03-23/index.html vous donnera tous les détails pour l'utiliser au maximum.