Le client décide s'il veut récupérer la représentation actuelle d'une ressource. Utilisez ce qu'on appelle "GET conditionnel".
La sémantique du changement de méthode GET à un "GET conditionnel" si le message de demande comprend un If-Unmodified-Depuis,-Since If-Modified, If-Match, If-None-Match, ou If- Champ d'en-tête de plage. Une méthode GET conditionnelle demande que l'entité soit transférée uniquement dans les circonstances décrites par le (s) champ (s) d'en-tête conditionnel (s). La méthode GET conditionnelle est destinée à réduire l'utilisation inutile du réseau en permettant aux entités mises en cache d'être actualisées sans nécessiter plusieurs demandes ou en transférant des données déjà détenues par le client.
(article 9.3 de http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html)
Comment ça marche? C est le client, S est le serveur.
C
GET /path/to/resource
S
200 OK
ETag: foo
Last-Modified: Tue, 15 Nov 1994 12:45:00 GMT
C
Le client PUT
s une version modifiée.
PUT /path/to/resource
If-Match: foo
S
Le client avait la version actuelle si une PUT
sur la ressource est OK.
200 OK
ETag: bar
Last-Modified: Tue, 15 Nov 1994 12:46:00 GMT
C
Le client PUT
est une version modiefied mais en attendant, la ressource a changé et le ETag: bar
ne correspond pas plus.
PUT /path/to/resource
If-Match: bar
S
412 Precondition Failed
C
Le client GET
s la version actuelle de la ressource.
GET /PATH/to/resource
S
200 OK
ETag: baz
Last-Modified: Tue, 15 Nov 1994 12:47:00 GMT
C
Maintenant, le client peut PUT
à nouveau la ressource.
PUT /path/to/resource
If-Match: ba7
S
200 OK
ETag: qux
Last-Modified: Tue, 15 Nov 1994 12:48:00 GMT
Merci pour la réponse détaillée, mais ce n'est pas en fait ce que je demandais. Cela est logique lorsque nous parlons d'une URL, mais dans mon exemple, l'entité est en cours de modification, mais certains attributs de cette entité sont utilisés pour créer une ressource sur une URL différente. Cela a-t-il du sens? – epitka