RESTful调用如何返回失败消息?

RESTful调用如何返回失败消息?,rest,http,Rest,Http,假设RESTful调用需要指示请求已被成功接受,但内容信息与现有数据冲突 例如,尝试插入一个新用户,需要一个响应来告诉用户存在,我正在寻找一种在RESTful中正确执行此操作的方法。 我的第一个选择是使用返回代码作为200 status,但是内容说请求返回为failure及其描述 HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 . . {"status":"failure", "message":"User exist

假设RESTful调用需要指示请求已被成功接受,但内容信息与现有数据冲突

例如,尝试插入一个新用户,需要一个响应来告诉用户存在,我正在寻找一种在RESTful中正确执行此操作的方法。 我的第一个选择是使用返回代码作为200 status,但是内容说请求返回为failure及其描述

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
.
.

{"status":"failure", "message":"User exists already"}
另一个选项是将HTTP响应代码更改为200状态以外的其他状态,并且只将描述注入JSON对象中

HTTP/1.1 409 Conflict
Content-Type: application/json; charset=utf-8
.
.

{"message":"User exists already"}

为了概括这个问题,RESTful应该是面向JSON内容的还是面向HTTP状态代码的异常处理?

对于REST,您必须始终利用响应中的状态代码来指示发生了什么。成功响应(状态代码
2xx
3xx
)或错误响应(
4xx
5xx
)都是如此。此外,在出现错误的情况下,如果特定的状态代码过于通用(例如,对状态代码为
400
422
的特定内容字段进行数据验证),则可以返回其他提示以在响应负载内提供更多提示。后者的结构由您决定。。。您在第二个代码段中使用的是完美的;-)

此链接(“错误处理”部分)可以在此级别为您提供更多提示:

希望它能帮助你,
Thierry

如果同一请求中有多个错误类型,并且需要根据响应采取不同的操作,该如何处理?在这种情况下,使用不同的HTTP状态或响应内容会更好吗?