Json 如何处理REST异常? 我们正在讨论如何处理REST异常。

Json 如何处理REST异常? 我们正在讨论如何处理REST异常。,json,rest,web-services,cxf,Json,Rest,Web Services,Cxf,响应内容类型:JSON 我们有两种解决方案: 将所有未检查的异常作为JSON响应抛出 发送请求无效的响应代码 论据: 如果是错误,为什么要返回JSON?只发送一个无效的响应代码 反论点: 响应代码太过技术化,普通开发人员无法处理 你说呢???对于我最近开发的JSON API,我两者都做。我总是使用有效的JSON进行响应(好吧,假设我完全响应)。如果检测到无效请求,则使用状态400。如果我检测到服务器错误(我不认为这是由无效请求引起的),我将使用5xx状态。JSON对象包含一个只针对错误设

响应内容类型:JSON

我们有两种解决方案:

  • 将所有未检查的异常作为JSON响应抛出
  • 发送请求无效的响应代码
  • 论据:

    • 如果是错误,为什么要返回JSON?只发送一个无效的响应代码
    反论点:

    • 响应代码太过技术化,普通开发人员无法处理

    你说呢???

    对于我最近开发的JSON API,我两者都做。我总是使用有效的JSON进行响应(好吧,假设我完全响应)。如果检测到无效请求,则使用状态400。如果我检测到服务器错误(我不认为这是由无效请求引起的),我将使用5xx状态。JSON对象包含一个只针对错误设置的特殊键,带有一个字符串值


    我认为这是一个很好的解决方案,它尊重REST原则,可以以多种方式使用。其他一些JSON API(如Yahoo Search)也使用相同的解决方案。试试。

    使用HTTP之类的错误代码。因此,对于某些内部问题引起的任何异常,50*。40*用于不好的争论。尽量避免使用自己定义的代码。这个想法是要有一个“统一”的界面

    总的来说。 204,无需发送任何内容即可获得成功 200表示资源的json表示成功 如果操作不成功,则返回相应的响应代码。您可以选择返回json。为了简化,您可以为所有错误响应使用通用格式(json)


    在您冻结api规范之前,必须先阅读。

    我想知道为什么响应代码太过技术化。如果您必须/能够采取任何纠正措施,您应该依赖于响应代码(或json中的任何其他错误代码),而不是用户可读的错误字符串我们处理各种类型的客户端。因此,我们不想假设开发人员和客户都足够熟练,能够理解响应代码。这是少数人的想法,也是我的想法。如果他们看到json,他们就能理解错误。REST的主要优点之一是接口的一致性。因此,当您说我们有一个RESTAPI时,客户机会自动预测资源列表和GET-PUT-POST-DELETE操作,同样地,他知道他可以想象的错误代码。错误字符串对于您的客户机(开发人员)调试无疑是有用的。但是他们针对您的api编写的代码应该基于代码而不是字符串来执行操作。+1:使用RESTful的HTTP,您绝对必须利用HTTP响应代码。其他信息可以在表示中返回。我刚刚在SO的“相关”项目中看到了这个答案。虽然这是一个老生常谈的答案,但它显然仍在出现。我相信良好的错误处理不仅仅是使用HTTP状态码(这是一个很好的开始!)。请参阅以获得深入讨论。“201获得成功,无需发送任何内容。”201已创建,因此它只应在“创建新资源”时使用,而不应用于一般成功。您可能会想到204“无内容”