REST:正确的HTTP响应代码,用于忽略的POST

Ovi*_*vid 16 rest http http-headers

我们有一个REST API,客户端通常会POST和PUT数据.当他们这样做时,有时他们POST数据导致我们的系统没有变化.POST和PUT格式正确,但是他们发送的数据与我们数据库中的数据完全相同.当发生这种情况时,我发现我们正在返回400 HTTP状态.不幸的是,这意味着"不良请求",因为"由于语法格式错误,服务器无法理解请求".

显然情况并非如此,但我被告知我们将使用它,因为没有其他适当的状态代码.我们考虑过的选择:

  • 304未修改.遗憾的是,这仅适用于GET请求.
  • 204没有内容.似乎很接近,但禁止实体.

其他选择似乎同样糟糕.我们可能会200 OK在我们返回的XML文档中使用并获得相关信息,但这似乎不是"RESTish".REST世界通常如何处理这个问题?

(修正未修改的响应代码.感谢Mkoeller)

Vin*_*vic 22

我认为在这种情况下返回200 OK是完全正常的,数据被正确处理并且服务器做了它必须的.由于服务器正确处理了数据,因此应返回OK状态代码.它在内部忽略它的事实是或应该是无关紧要的.

服务器对数据做了什么不应该告诉客户端,应该告诉他们发生了什么请求(处理好,发生错误等).

如果,出于一些奇怪的原因(我不能认为是有效的,顺便说一句),客户感兴趣,你有回应告诉他们.