Introduction

L’objectif de ce cours est l’initiation au développement de serveurs et de clients web ReST.

Il s’appuie sur les prérequis sont les suivants :

  • Développement d’application PHP et connaissance du protocole HTTP :
    • paramètres de requêtes (ce qui suit le ?),
    • méthodes (GET, POST…),
    • entêtes Content-Type et Accept,
    • corps d’une requête (données envoyées par le client, cf formulaires),
    • corps d’une réponse (HTML),
    • codes de statut 200, 400…, 500 ;
  • Architecture MVC avec routage d’URI et ORM ;
  • Sérialisation de données JSON ou XML.

De l’application au service web

Similarités et différences

Le développement d’un service web est très similaire à celui d’une application. La principale différence est qu’un service ne propose pas d’interface utilisateur, mais une API – réseau – destinée à être utilisée par d’autres applications (web, mobiles…).

Alors qu’une application web dispose d’une interface HTML et est destinée à des utilisateurs, un service web se contente de réceptionner ou d’envoyer des données, souvent sérialisées aux formats JSON ou XML ; un service web est utilisé par des applications.

  • Application web classique : utilisateur → application web
  • Application web distribuée : utilisateur → application web → service web

Avantages des services web

Les avantages d’un service web sont les suivants :

  • Inter-opérabilité entre applications, notamment grâce à l’utilisation d’un protocole de communication (HTTP) et de formats de données standards.
  • Découplage entre fonctionnalités et interface, ce qui permet par exemple de développer plusieurs interfaces (une web et une mobile par exemple) s’appuyant sur un même service.

Technologies

Il existe plusieurs technologies pour développer des services web :

  • Les services web de type ReST exposent leurs fonctionnalités comme un ensemble de ressources identifiables par leur URI et exploitant la sémantique du protocole HTTP (les méthodes POST, GET, PUT et DELETE) pour spécifier l’action CRUD.
  • Les services web WS-✷ exposent leurs fonctionnalités sous la forme de services exécutables à distance RPC. SOAP en est un exemple.

Style d’architecture ReST

Le style d’architecture ReST a été imaginé par Roy Fielding en l’an 2000). Ce n’est pas une technologie, mais un standard architectural pour exposer des ressources via HTTP en respectant certaines contraintes :

  • identification unique des ressources : chaque ressource est associée à une URI immuable, indépendante de l’opération CRUD ; par exemple : /islands/Tahiti ;
  • l’action est déterminée par la méthode HTTP :
    • créer : POST,
    • obtenir : GET,
    • modifier : PUT,
    • supprimer : DELETE,
  • le protocole doit être sans-état (stateless) côté serveur (pas de sessions).

Comme tout protocole, l’API doit être documentée : spécification des URI, formats des données en entrée et sortie, codes de statuts HTTP…