2017-04-01 3 views
-1

Nous avons un produit avec point final de repos POST, PUT, DELETE.REST: Comment gérer la requête POST qui a déjà l'ID dans le corps de la demande

Le corps de la requête POST ressemble:

{ 
     "Id": Unique identifier of the product, 
     "Description": Product description, 
     "Price": Price of the product 
} 

Maintenant, puisque POST est considéré comme non idempotente, mais ici nous ne pouvons pas autoriser des entrées en double avec la même « Id ». Ce "Id" dans le corps de la demande est l'ID du système tiers qui demande POST à ​​notre système.

Nous autorisons la mise à jour/suppression de la ressource avec cet "ID" uniquement et n'attendons pas POST/PUT avec nos identifiants internes générés. Bien que nous générions notre identifiant unique que nous renvoyons en réponse à cette requête POST, tout comme l'accusé de réception de cette demande.

Mais je me demandais, devrait-il être POST ou une demande PUT? Que devons-nous faire au cas où nous aurions une demande POST en double, nous devrions renvoyer une erreur de validation OU mettre à jour la précédente demande enregistrée?

Que dit REST OU quelle approche serait la meilleure pour la performance et la maintenance?

Répondre

0

Pourquoi ne pas offrir les deux?

Une méthode POST qui jette un HttpStatusCode 409 (Conflit) dans le cas où l'ID dans le corps est déjà présent dans votre système, et un autre (PUT), qui met à jour la ressource avec les nouvelles valeurs dans le corps. Vous pouvez même ajouter un PATCH, pour ne mettre à jour que les champs passés dans le corps.