2010-06-30 8 views
5

Je ne sais pas comment je devrais mettre à jour les propriétés individuelles d'une ressource REST. Prenons l'exemple suivant:Comment mettre à jour une ressource REST?

# HTTP GET to /users/1.xml 
<?xml version="1.0" encoding="UTF-8" ?> 
<response> 
    <user> 
     <id>1</id> 
     <name>John Doe</name> 
     <email>[email protected]</email> 
    </user> 
</response> 

Comment devrais-je faciliter la mise à jour de l'e-mail de John? Je pense à HTTP PUT, mais cela serait difficile pour mes clients en exigeant un code XML complet (correspondant à la réponse HTTP GET) pour modifier la ressource.

Les demandes de méthode PUT que l'entité incluse être stockés dans l'URI de demande fourni . Si l'adresse URI de demande fait référence à une ressource existante , l'entité DEVRAIT être considérée comme une version modifiée de celle résidant sur le serveur d'origine .

Existe-t-il un autre moyen?

Répondre

7

Si votre cadre de serveur est suffisamment souple pour gérer, vous pouvez le faire:

Request: 
PUT /users/1/email 
Content-Type: text/plain 

[email protected] 

Response: 
200 OK 
Content-Location: /users/1 

En utilisant une URL pour faire référence à l'e-mail comme ressource propre, vous pouvez mettre directement à l'aide d'un format simple comme le texte/plain. Dans la réponse, l'URL Content-Location donne au client une indication que la modification a eu un impact sur la ressource utilisateur.

La méthode PATCH est également une autre façon de réaliser des mises à jour partielles. C'est une méthode nouvellement introduite et pour l'instant il n'y a pas de formats standard pour l'envoi de documents XML. Donc, si vous adoptez cette approche, vous ne trouverez pas beaucoup de conseils.

L'autre chose à prendre en compte est que REST fonctionne mieux avec les mises à jour granulaires. Si vous avez besoin de faire ces petites modifications, vous devrez peut-être repenser votre architecture distribuée.

Questions connexes