为什么要在RESTful服务中使用HTTP响应代码来指示与业务相关的逻辑?

为什么要在RESTful服务中使用HTTP响应代码来指示与业务相关的逻辑?,rest,restful-architecture,Rest,Restful Architecture,我读过: 我理解这些原则,但使用HTTP响应代码来指示业务逻辑的RESTful API服务状态似乎是模棱两可、重复的,让我感到困惑 仅考虑HTTP响应代码,403可能表示用户没有足够的权限使用RESTful服务,或者只是没有访问HTTP服务器的权限(例如HTTP授权失败) 因此,在这种情况下,客户机应该查看响应主体,看看它是业务逻辑错误还是仅仅是服务器错误 对于404,客户端不知道服务器上的资源是否不存在,或者业务对象是否不存在。它还必须研究响应体 那么,为什么人们会继续使用带有业务逻辑错误的

我读过:

我理解这些原则,但使用HTTP响应代码来指示业务逻辑的RESTful API服务状态似乎是模棱两可、重复的,让我感到困惑

仅考虑HTTP响应代码,403可能表示用户没有足够的权限使用RESTful服务,或者只是没有访问HTTP服务器的权限(例如HTTP授权失败)

因此,在这种情况下,客户机应该查看响应主体,看看它是业务逻辑错误还是仅仅是服务器错误

对于404,客户端不知道服务器上的资源是否不存在,或者业务对象是否不存在。它还必须研究响应体

那么,为什么人们会继续使用带有业务逻辑错误的HTTP响应代码呢?对我来说,更简单的方法是查看响应体中的业务逻辑错误并对其进行处理。是否有必要使用HTTP响应和业务逻辑错误

非常感谢

那么,为什么人们会继续使用带有业务逻辑错误的HTTP响应代码呢

在创建遵循HTTP协议的应用程序时,您可以使应用程序域适应资源,这是REST体系结构的核心部分

服务器提供一组URL来定位资源,它们的状态可以通过HTTP动词和表示(如JSON和/或XML)进行操作。和用于通知客户操作状态。误导性的状态代码将传递有关请求状态的错误信息

定义了状态代码的类别:

  • 1xx
    (信息性):已收到请求,正在继续处理
  • 2xx
    (成功):请求已成功接收、理解和接受
  • 3xx
    (重定向):需要采取进一步措施以完成请求
  • 4xx
    (客户端错误):请求包含错误语法或无法实现
  • 5xx
    (服务器错误):服务器未能满足明显有效的请求
例如,如果请求因客户端错误而失败(例如,负载中提供了格式错误的请求或无效数据),则返回
2xx
5xx
状态代码在此处会产生误导。
4xx
状态代码适用于表示导致错误的原因

是否有必要使用HTTP响应和业务逻辑错误

某些状态(如和)可用于表示业务逻辑错误

对我来说,更简单的方法是查看响应体中的业务逻辑错误并对其进行处理

诚然,HTTP状态代码有时不足以传递足够的错误信息以提供帮助。但创建的是为了填补这一空白:它定义简单的JSON和XML文档来指示问题

那么,为什么人们会继续使用带有业务逻辑错误的HTTP响应代码呢

在创建遵循HTTP协议的应用程序时,您可以使应用程序域适应资源,这是REST体系结构的核心部分

服务器提供一组URL来定位资源,它们的状态可以通过HTTP动词和表示(如JSON和/或XML)进行操作。和用于通知客户操作状态。误导性的状态代码将传递有关请求状态的错误信息

定义了状态代码的类别:

  • 1xx
    (信息性):已收到请求,正在继续处理
  • 2xx
    (成功):请求已成功接收、理解和接受
  • 3xx
    (重定向):需要采取进一步措施以完成请求
  • 4xx
    (客户端错误):请求包含错误语法或无法实现
  • 5xx
    (服务器错误):服务器未能满足明显有效的请求
例如,如果请求因客户端错误而失败(例如,负载中提供了格式错误的请求或无效数据),则返回
2xx
5xx
状态代码在此处会产生误导。
4xx
状态代码适用于表示导致错误的原因

是否有必要使用HTTP响应和业务逻辑错误

某些状态(如和)可用于表示业务逻辑错误

对我来说,更简单的方法是查看响应体中的业务逻辑错误并对其进行处理


诚然,HTTP状态代码有时不足以传递足够的错误信息以提供帮助。但创建状态代码是为了填补这一空白:它定义简单的JSON和XML文档来表示问题。

一般来说,状态代码是为HTTP机制本身保留的。如果业务逻辑有问题,应该在消息中发送。一般来说,状态代码是为HTTP机制本身保留的。如果业务逻辑有问题,应该在消息中发送。