Я розробляв веб-службу RESTful за допомогою WebApi і мені було цікаво, які відповіді та органи відповіді HTTP повертатимуться під час оновлення / створення об’єктів.
Наприклад, я можу використовувати метод POST, щоб надіслати деякий JSON до веб-сервісу, а потім створити об'єкт. Найкраще практично встановити статус HTTP у створеному (201) або нормально (200) і просто повернути повідомлення типу "Новий співробітник додано" або повернути об'єкт, який був надісланий спочатку?
Те саме стосується методу PUT. Який статус HTTP найкраще використовувати та чи потрібно мені повертати створений об’єкт або просто повідомлення? Враховуючи той факт, що користувач все одно знає, який об’єкт намагаються створити / оновити.
Будь-які думки?
Приклад:
Додати нового працівника:
POST /api/employee HTTP/1.1
Host: localhost:8000
Content-Type: application/json
{
"Employee": {
"Name" : "Joe Bloggs",
"Department" : "Finance"
}
}
Оновіть наявного працівника:
PUT /api/employee HTTP/1.1
Host: localhost:8000
Content-Type: application/json
{
"Employee": {
"Id" : 1
"Name" : "Joe Bloggs",
"Department" : "IT"
}
}
Відповіді:
Відповідь із створеним / оновленим об'єктом
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"
}
}
Відповідь лише повідомленням:
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"
}
Відповідь за допомогою просто коду статусу:
HTTP/1.1 204 No Content
Content-Length: 39
Date: Mon, 28 Mar 2016 14:32:39 GMT
UPDATE/INSERT ... RETURNING
варіант Postgresql для SQL. Це надзвичайно зручно, тим більше, що він зберігає подання нових даних та запит на оновлену атомну версію.