Developpez.com - Rubrique ALM

Le Club des Développeurs et IT Pro

Ouverture du forum d'entraide REST : Representational State Transfer

Le 2009-07-05 12:40:21, par Ricky81, Expert éminent sénior
Bonjour,

Ce forum se destine à vos questions touchant aux architectures REST (Representational State Transfer) et à la recherche de solutions techniques.

Il est complémentaire de certains forums techniques tournés vers des implémentations / frameworks particulier :

REST étant transverse aux différentes technologies / langages, si vous ne trouvez pas de forum dédié à un framework ou une technologie particulière, posez vos questions techniques dans le présent forum en attendant mieux

Toute suggestion et contribution est la bienvenue.

En complément : Ressources REST à consulter et télécharger
  Discussion forum
10 commentaires
  • Tommy31
    Membre chevronné
    Je me pose la question de la nécessité d'utiliser des Etags pour la gestion du changement dans les resources ?
  • LDDL
    Membre habitué
    heuu... c'est quoi un Etags ?
  • nicorama
    En attente de confirmation mail
    Envoyé par Tommy31
    Je me pose la question de la nécessité d'utiliser des Etags pour la gestion du changement dans les resources ?
    Dixit Wikipedia :
    The header is useful for intermediary devices that perform caching, as well as for client web browsers that cache results.
    Avec Etag, et les autres headers (Last-Modified, Expires, If-Modified-Since, If-None-Match), on peut définir précisemment ce qui a besoin d'être downloadé ou pas. Au passage, on peut compresser aussi

    Je ne m'en occupe pas, c'est mal, mais c'est beaucoup de boulot, pas juste un header à remplir. Il faut définir quelles sont les resources appropriée, comment calculer le Etag sans risquer une catastrophe, avoir une stratégie sur la durée du cache... et savoir si l'économie sur la bande passante est plus grande que le temps passé par le developpeur.
  • fbaligand
    Membre à l'essai
    Nul besoin de se compliquer la vie à "développer" ce genre de fonctions.
    Apache fournit des modules qui font ça très bien.
  • nicorama
    En attente de confirmation mail
    Envoyé par fbaligand
    Nul besoin de se compliquer la vie à "développer" ce genre de fonctions.
    Apache fournit des modules qui font ça très bien.
    Rhalala Ok pour renvoyer un 304 pour une image placée sur le serveur. Mais suppose un gros stock de datas, genre l'ensemble des hôtels dans la haute-garonne, avec les méta-datas qui vont bien avec.

    datas dans la database->java->xml : le doc xml est la représentation de ta resource /maps/datas/hotels/31
    A t-il changé depuis ta dernière connexion ? Apache n'en sais rien, mais un hash sur le document xml te renseignera et pourra éviter de dl quelques ko.
  • jlouvel
    Futur Membre du Club
    Avec le framework Restlet, la gestion des ETags est très simple. Il suffit de renvoyer leur valeur avec chaque GET (propriété "tag" de la classe Representation). Cette propriété est une instance de la classe Tag, ce qui facilite sa création et manipulation.

    Ensuite, le framework se charge automatiquement de la vérification des méthodes conditonnelles basées sur les tags et renvoie le status 304 si nécessaire.
  • nicorama
    En attente de confirmation mail
    Envoyé par jlouvel
    Avec le framework Restlet, la gestion des ETags est très simple. Il suffit de renvoyer leur valeur avec chaque GET (propriété "tag" de la classe Representation). Cette propriété est une instance de la classe Tag, ce qui facilite sa création et manipulation.

    Ensuite, le framework se charge automatiquement de la vérification des méthodes conditonnelles basées sur les tags et renvoie le status 304 si nécessaire.
    Un hash de la resource n'est pas difficile, mais il reste une stratégie à définir sur la durée de vie. Il est cependant agréable que Restlet fournisse la solution technique et laisse le concepteur concevoir les problèmes. C'est fait pour .

    Un peu d'infos bien faite sur les différents headers : http://www.caucho.com/resin/doc/proxy-cache.xtp
  • LDDL
    Membre habitué
    J'ai du mal à comprendre l'interaction du Etag. Cela intervient à quel moment et chez qui ?
  • jlouvel
    Futur Membre du Club
    Le ETag est une sorte d'identifiant unique de la représentation d'une resource (le document retourné par un GET pour simplifier).

    Si cette représentation contient un tag, il peut être utilisé par des requêtes suivantes pour éviter de récupérer le même contenu, ou pour éviter d'écraser les changements d'un autre utilisateur (GET et PUT conditionnels).
  • wiztricks
    Expert éminent sénior
    Envoyé par jlouvel
    Le ETag est une sorte d'identifiant unique de la représentation d'une resource (le document retourné par un GET pour simplifier).
    Le membre d'une Ressource est identifié par son URI: http:..../<<Ressource>> et un membre par son ID, ex:123

    Lorsqu'on fait une lecture du membre, i.e la requête HTTP
    GET ..../<<Ressource>>/123 le serveur peut retourner un ETag dans la réponse.

    Cet Etag est une valeur associée à l'état de la ressource (par le serveur) ..../<<Ressource>>/123 au moment ou elle a été lue (ex: le MD5 du contenu)

    Le client peut "stocker" l'Etag.

    Si plus tard, le client souhaite savoir si la ressource a changé, il peut effectuer une requête de type "HTTP Head" vers l'identifiant de la ressource avec l'Etag (dans une condition "If-None-Match" de la requête).

    Le serveur retourne une réponse en fonction de la valeur courante de l'Etag associée à la Ressource et celle expédiée par le Client

    -W