Architecture REST

  • Representational State Transfer (REST)

    Architecture Styles and the Design of Network-Based Software Architectures

    Roy Fielding (thèse de doctorat, 2000)

  • Style d'architecture

    Ensemble de contraintes sur la conception des applications et la mise en oeuvre de HTTP

    • organisation de l'espace d'entrée des URLs
    • application uniforme des méthodes HTTP avec la sémantique CRUD

Simplicité de REST

  • REST s'applique directement sur l'architecture web

  • Pas besoin d'implémenter une couche supplémentaire de protocoles comme dans le cas de SOAP (mais cela est vrai aussi de XML-RPC)

    Exemple

    <?xml version="1.0"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
          soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
      <soap:Header>...</soap:Header>
      <soap:Body>
        <m:GetPrice xmlns:m="http://www.exemple.com/prices">
          <m:Item>Pomme</m:Item>
        </m:GetPrice>
        <soap:Fault>
        ...
        </soap:Fault>
      </soap:Body>
    </soap:Envelope>

    Contrairement à SOAP REST va utiliser directement les URLs et les méthodes HTTP pour représenter la sémantique de l'application

    Version REST

    GET /items/pomme/price

Composants REST

  • Ressources

    Représentent tous les états et les fonctionnalités d'une application

    Adressables de préférence sous forme de nom (ex: /commandes/830428/items/8)

  • Actions

    Représentées par les méthodes HTTP (GET, POST, PUT, DELETE)

  • La conception d'une application consiste à donner un nom à chaque chose

    Et à découper l'espace d'entrée des URLs

  • Chaque action sur une ressource doit retourner une représentation

    Possibilité d'utiliser un suffixe (.json, .xml, .text) pour spécifier un format de retour

    De l'importance du type MIME

À suivre....

  • Ce module se poursuit avec les transparents suivants :

  • Interface Uniforme (CRUD)

  • Chaque action retourne un statut

  • Exercice 9