【问题标题】:How should RESTful calls return for failure messages?RESTful 调用应该如何返回失败消息?
【发布时间】:2015-03-22 16:11:29
【问题描述】:

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

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

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 http


    【解决方案1】:

    使用 REST,您必须始终利用响应中的状态代码来指示发生的情况。成功响应(状态代码2xx3xx)或错误响应(4xx5xx)就是这种情况。此外,在出现错误的情况下,如果特定状态代码过于通用(例如,状态代码为 400422 的特定内容字段的数据验证),您可以返回附加提示以在响应中提供更多提示有效载荷。后者的结构由您决定...您在第二个 sn-p 中使用的内容是完美的 ;-)

    此链接(“错误处理”部分)可以在此级别为您提供更多提示:https://templth.wordpress.com/2014/12/15/designing-a-web-api/

    希望对你有帮助 蒂埃里

    【讨论】:

    • 如果同一个请求中有多个错误类型,需要根据响应采取不同的处理方式怎么办?在这种情况下,不同的 HTTP 状态或响应内容应该告诉下一步该做什么会更好吗?
    猜你喜欢
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    • 2017-01-11
    • 2012-03-09
    • 2019-10-16
    • 2013-02-01
    相关资源
    最近更新 更多