Statut HTTP 412 (Échec de la précondition) et versionnement de la base de données

Je me suis mise en œuvre d'un service web RESTful qui accède à une base de données. Les entités dans la base de données sont versionnées pour détecter de multiples mises à jour. Par exemple, si la valeur actuelle est {"name":"Bill", "comment":"tinker", "version":3}si un utilisateur Met {"name":"Bill", "comment":"tailor", "version":3}la demande va réussir (200 OK) et la nouvelle valeur sera {"name":"Bill", "comment":"tailor", "version":4}. Si un deuxième utilisateur Met {"name":"Bill", "comment":"sailor", "version":3"} que la demande échoue (409 Conflit) car le numéro de version ne correspond pas.

Il y a des non-Sommeil interfaces, de sorte que la conception de bases de données ne peut pas être modifié. L'interface RESTful appelle une interface existante qui gère les détails de la vérification de la version.

Une règle de pouce dans les services web RESTful qui est de suivre les détails de l'adresse HTTP à chaque fois que possible. Serait-il mieux dans ce cas utiliser un conditionnel en-tête de la demande et retourner 412 Échec de la Condition préalable si la version ne correspond pas? L'en-tête approprié semble être Si-Match. Cet en-tête prend un ETag (Balise d'Entité) qui pourrait être un hachage de la représentation de l'état actuel de la ressource.

Si je l'ai fait, les ETags serait pour les apparences de l'amour, parce que la version en serait toujours à la vraie chose que je suis en essais.

Est-il une raison je devrais le faire, d'autres de "faire plus de Repos", ce que c'est censé vouloir dire?

source d'informationauteur Mark Lutton