Tôi đang thiết kế một dịch vụ web RESTful bằng WebApi và đang tự hỏi những phản hồi và nội dung phản hồi HTTP nào sẽ trả về khi cập nhật / tạo đối tượng.
Ví dụ, tôi có thể sử dụng phương thức POST để gửi một số JSON đến dịch vụ web và sau đó tạo một đối tượng. Cách tốt nhất là sau đó đặt trạng thái HTTP thành đã tạo (201) hoặc ok (200) và chỉ cần trả về một thông báo như "Nhân viên mới được thêm vào" hoặc trả lại đối tượng đã được gửi ban đầu?
Điều tương tự cũng xảy ra với phương pháp PUT. Trạng thái HTTP nào là tốt nhất để sử dụng và tôi có cần trả về đối tượng đã được tạo hoặc chỉ là một tin nhắn không? Xem xét thực tế rằng người dùng biết đối tượng họ đang cố gắng tạo / cập nhật bằng cách nào.
Có suy nghĩ gì không?
Thí dụ:
Thêm nhân viên mới:
POST /api/employee HTTP/1.1
Host: localhost:8000
Content-Type: application/json
{
"Employee": {
"Name" : "Joe Bloggs",
"Department" : "Finance"
}
}
Cập nhật nhân viên hiện có:
PUT /api/employee HTTP/1.1
Host: localhost:8000
Content-Type: application/json
{
"Employee": {
"Id" : 1
"Name" : "Joe Bloggs",
"Department" : "IT"
}
}
Phản hồi:
Phản hồi với đối tượng được tạo / cập nhật
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"
}
}
Trả lời chỉ bằng tin nhắn:
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"
}
Phản hồi chỉ với mã trạng thái:
HTTP/1.1 204 No Content
Content-Length: 39
Date: Mon, 28 Mar 2016 14:32:39 GMT
UPDATE/INSERT ... RETURNING
biến thể Postgresql cho SQL. Nó cực kỳ tiện dụng, đặc biệt là nó giữ việc gửi dữ liệu mới và yêu cầu cho phiên bản nguyên tử cập nhật.