Je conçois un service Web RESTful utilisant WebApi et je me demandais quelles réponses HTTP et quels corps de réponse renvoyer lors de la mise à jour / de la création d'objets.
Par exemple, je peux utiliser la méthode POST pour envoyer du JSON au service Web, puis créer un objet. Est-il recommandé de définir ensuite le statut HTTP sur créé (201) ou ok (200) et de simplement renvoyer un message tel que "Nouvel employé ajouté" ou de renvoyer l'objet envoyé à l'origine?
Il en va de même pour la méthode PUT. Quel est le meilleur statut HTTP à utiliser et dois-je renvoyer l'objet créé ou juste un message? Considérant le fait que l'utilisateur sait quel objet il tente de créer / mettre à jour de toute façon.
Des pensées?
Exemple:
Ajouter un nouvel employé:
POST /api/employee HTTP/1.1
Host: localhost:8000
Content-Type: application/json
{
"Employee": {
"Name" : "Joe Bloggs",
"Department" : "Finance"
}
}
Mettre à jour un employé existant:
PUT /api/employee HTTP/1.1
Host: localhost:8000
Content-Type: application/json
{
"Employee": {
"Id" : 1
"Name" : "Joe Bloggs",
"Department" : "IT"
}
}
Réponses:
Réponse avec objet créé / mis à jour
HTTP/1.1 201 Created
Content-Length: 39
Content-Type: application/json; charset=utf-8
Date: Mon, 28 Mar 2016 14:32:39 GMT
{
"Employee": {
"Id" : 1
"Name" : "Joe Bloggs",
"Department" : "IT"
}
}
Réponse avec juste un message:
HTTP/1.1 200 OK
Content-Length: 39
Content-Type: application/json; charset=utf-8
Date: Mon, 28 Mar 2016 14:32:39 GMT
{
"Message": "Employee updated"
}
Réponse avec juste le code de statut:
HTTP/1.1 204 No Content
Content-Length: 39
Date: Mon, 28 Mar 2016 14:32:39 GMT
UPDATE/INSERT ... RETURNING
variante Postgresql pour SQL. C'est extrêmement pratique, en particulier parce qu'il conserve la soumission de nouvelles données et demande la version mise à jour atomique.