【发布时间】:2022-09-22 21:49:20
【问题描述】:
假设您向端点发送请求并期望接收记录数组字段作为响应,如下所示:
{
\"records\": [
...
],
}
现在您正在处理response.data.record,但随后您发现记录字段不存在。
我应该抛出异常吗?如果是,描述此错误的最佳状态代码是什么?
考虑一个请求的格式正确并发送到端点。
我正在遍历数组并搜索特定对象,因此我考虑返回404,但在这种特定情况下,我什至没有要迭代的数组。
-
这在很大程度上是一个意见问题,因此对于 SO 来说是题外话,但这看起来像一个错误的请求对我来说,有一个特定的 HTTP 状态代码:400。
-
通常 API 端点定义结果响应,应该为端点固定,除非它对提供的参数做出反应并返回特定结果。但是,如果您访问 API 端点,它应该始终返回一个后续响应/数据结构以供依赖。如果请求将返回响应,其中无法返回响应/数据结构,则服务器本身应根据问题以 HTTP-Error 响应。这将是 HTTP 状态代码 400,或者如果找不到匹配的资源,则 HTTP 状态代码 404 可能就足够了。
-
但这意味着请求在某种程度上是错误的,对吧?这里的重点是,由于某种原因,响应不如预期。我们可以假设请求的格式正确。
-
如果由于“服务器端”上缺少资源来处理而发生这种情况,则使用 500 可能是可以的,即不受客户要求的影响.如果由于客户端的请求,服务器请求记录(例如客户端请求服务器迭代客户端的查询记录)。然后,我认为使用 404 是安全的,因为这显然是服务器缺少的东西客户要求.
标签: javascript error-handling http-error