Comment soumettre Reposant mises à jour partielles?
Sam Ruby, auteur de "Services Web RESTful" semble s'opposer à l'utilisation de HTTP PUT pour des mises à jour partielles: http://intertwingly.net/blog/2008/02/15/Embrace-Extend-then-Innovate
Ce qui n'est pas clair, c'est comment des mises à jour partielles devrait lieu. Comme je l'ai commenté près de la partie inférieure de son blog, il n'est pas clair comment l'utilisation de HTTP PATCH est mieux que d'utiliser un "patch document" contre HTTP PUT.
Il est intéressant de noter que, bien que Sam vient de sortir contre l'utilisation abusive de HTTP PUT, il ne semble pas de préconiser l'utilisation de HTTP PATCH soit.
Comment doit-on soumettre Reposant mises à jour partielles?
Vous devez vous connecter pour publier un commentaire.
Comme vous pouvez le voir dans les commentaires du blog que vous l'avez mentionné il n'y a pas de consensus sur la façon de faire des mises à jour partielles. Si les poids lourds à l'instar de Sam Ruby, Joe Gregario, Mark Nottingham, Mark Pilgrim, le projet de Loi de hÓra, etc ne peut pas parvenir à un accord, quel espoir avons-nous.
Autant que je suis concerné, je ne m'inquiéterais pas trop. Créer une mise à jour partielle type de média qui fonctionne pour vous, utilisez le PATCH pour indiquer votre intention et, lorsqu'un accord est finalement trouvé sur un usage général type de média, de changer de serveur pour accepter les deux formats.
Être reconnaissants que si le péché le plus grave de votre api REST s'engage abuse de METTRE/PATCH, alors vous faites assez bien.
Il est désormais année 2013, vous devez utiliser les PATCH pour les mises à jour partielles - soit en utilisant json-patch (voir http://tools.ietf.org/html/rfc6902 ou http://www.mnot.net/blog/2012/09/05/patch) ou xml-patch documents (voir http://tools.ietf.org/html/rfc7351). À mon avis cependant, json-patch est le mieux adapté à votre type de données de l'entreprise.
PATCH avec JSON/XML patch documents a très détroit vers l'avant de la sémantique pour des mises à jour partielles. Si vous commencez à l'aide de POST, avec les copies modifiées du document original, pour des mises à jour partielles bientôt vous rencontrer des problèmes lorsque vous souhaitez valeurs manquantes (ou, plutôt, les valeurs nulles) pour représenter "ignorer cette propriété" ou "définir cette propriété sur la valeur vide" - et qui mène vers le bas un trou de lapin de piraté des solutions qui en fin de compte, votre propre type de format de patch.
Vous pouvez trouver un plus en profondeur réponse ici: http://soabits.blogspot.dk/2013/01/http-put-patch-or-post-partial-updates.html.
Mise à jour: Est-ce que le RPC?
Bien, si vous définissez RPC comme l'envoi de commandes à un serveur puis toutes et tous HTTP opérations sont des appels RPC - si vous OBTENEZ une ressource, METTRE une nouvelle représentation ou de le SUPPRIMER à nouveau - uns d'entre eux sont constitués d'un envoi d'une commande (verbe) GET/PUT/DELETE etc. et une option de charge utile. Il se trouve simplement que l'adresse HTTP du groupe de travail (ou de qui c'est) a introduit un nouveau verbe PATCH qui permet aux clients de faire des mises à jour partielles à une ressource.
Si de rien d'autre que l'envoi de la représentation complète du serveur est considéré comme RPC style, alors, par définition, des mises à jour partielles ne peuvent pas être de tout repos. On peut choisir d'avoir ce point de vue, mais les gens derrière l'infrastructure web dit différemment - et a ainsi défini un nouveau verbe pour ce but.
RPC est plus sur le creusement des appels de méthode par le biais de HTTP dans une manière qui est invisible pour les intermédiaires sur le web - par exemple à l'aide de SAVON à la méthode d'enveloppement des noms et des paramètres. Ces opérations sont "invisibles" car il n'y a pas de normes qui définissent les méthodes et les paramètres à l'intérieur de la charge utile.
Comparer ce PATCH avec les médias de type application/json-patch - l'intention de l'opération est clairement visible à tout intermédiaire sur le web depuis que le verbe PATCH a un sens bien défini sens et la charge utile est codée dans un autre bien public disponible format détenu en commun de l'autorité sur l'internet (IETF). Le résultat net est plein de visibilité pour tout le monde et pas spécifique à l'application secret de la sémantique.
RESTE est aussi à propos de "fortuite réutilisation", ce qui est exactement ce PATCH avec l'application/json-patch est - réutilisation d'une norme existante au lieu d'inventer une application de protocoles spécifiques qui font plus ou moins la même.
PATCH
le même quePOST
(pas de mise en cache de l'état résultant). Aucun proxy n'est d'aller à la peine de la mise en œuvre de tous lesPATCH
variantes. Le seul avantage pratique peut être côté client et côté serveur bibliothèques pour créer automatiquement/déballage d'un patch. Était-ce vraiment un problème en premier lieu? Discutable. Je ne crois pas que j'aurais pu trouver une meilleure solution. Je dis juste que la définition dePATCH
n'a pas vraiment d'ajouter beaucoup de valeur à ce qui était déjà là.Au lieu de brassage d'une mise à jour partielle type de support et à l'aide de l'encore-non-standard PATCH méthode, vous pourriez donner des pièces de vos ressources de leur propre URI.
HTTP PATCH a maintenant un RFC - HTTP PATCH RFC