我正在使用WebApi设计RESTful Web服务,并且想知道在更新/创建对象时返回哪些HTTP响应和响应主体。
例如,我可以使用POST方法将一些JSON发送到Web服务,然后创建一个对象。然后,将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
SQL 的Postgresql 变体非常相似。这非常方便,特别是因为它可以使新数据的提交和对更新版本的请求保持原子性。