带有空数据的 HTTP PUT 的响应代码
Response code for HTTP PUT with empty data
什么是最common/industry HTTP PUT 的标准响应代码:
- 客户提出了一个格式正确的请求和
- file/message/data的内容为空和
- 因此,server/in 数据库
上没有任何更改
在我的特定情况下,客户端发送带有空 JSON 的 HTTP PUT,如下所示:
{}
虽然我期待更多这样的东西:
{
key1: {
something: value,
something2:value2
},
key2: {
something: value3,
something: value4
}
}
在我的例子中,这将转化为 4 个新行被更新到数据库中。
我正在考虑 400(因为当您调用 HTTP PUT 但您没有任何东西可以 put[= 时,它可能 是 一个错误的请求39=] 那里), 200, 204 和 304.
我的问题与 and this because they are about HTTP GET method, and is different from this 不同,因为虽然它是关于 HTTP PUT 的,但答案并没有解决我的问题。
一个 PUT
请求应该 替换 服务器上指定 uri 的内容。
因此,如果 uri 处的资源已经为空,并且正在放入的新资源也为空,则没有任何变化但仍然成功,所以 200 OK
没问题。
如果资源不存在并且您创建了一个新的 0 字节资源,201 Created
可能更合适。
如果资源确实存在但不是空的,并且您发送一个空的PUT
请求,它应该用一个空的资源替换现有的资源。
这是你出错的地方,因为 PUT
不应该像你正在做的那样用于每条记录 "upsert"。
如果您陈述的 PUT 请求在语义上是正确的,它应该清除与该位置关联的所有现有记录。
您可能想要的是 PATCH
或 POST
。
什么是最common/industry HTTP PUT 的标准响应代码:
- 客户提出了一个格式正确的请求和
- file/message/data的内容为空和
- 因此,server/in 数据库 上没有任何更改
在我的特定情况下,客户端发送带有空 JSON 的 HTTP PUT,如下所示:
{}
虽然我期待更多这样的东西:
{
key1: {
something: value,
something2:value2
},
key2: {
something: value3,
something: value4
}
}
在我的例子中,这将转化为 4 个新行被更新到数据库中。
我正在考虑 400(因为当您调用 HTTP PUT 但您没有任何东西可以 put[= 时,它可能 是 一个错误的请求39=] 那里), 200, 204 和 304.
我的问题与
一个 PUT
请求应该 替换 服务器上指定 uri 的内容。
因此,如果 uri 处的资源已经为空,并且正在放入的新资源也为空,则没有任何变化但仍然成功,所以 200 OK
没问题。
如果资源不存在并且您创建了一个新的 0 字节资源,201 Created
可能更合适。
如果资源确实存在但不是空的,并且您发送一个空的PUT
请求,它应该用一个空的资源替换现有的资源。
这是你出错的地方,因为 PUT
不应该像你正在做的那样用于每条记录 "upsert"。
如果您陈述的 PUT 请求在语义上是正确的,它应该清除与该位置关联的所有现有记录。
您可能想要的是 PATCH
或 POST
。