REST Web 服务:错误代码应为 404 或 405?



我想问你在这种情况下我应该返回什么错误代码:

假设我们有一个具有此路径的 Web 服务:

/customer-web/customers/{customerId}/subscription/{subscriptionId}

默认情况下,如果用户不指定subscriptionId,我们会得到一个405 Method not allowed但是,如果我们省略customerId,我们会得到一个404 Not found

这是对的吗?我们应该以某种方式统一错误代码吗?

谢谢!

[编辑]还有一件事:如果我们假设,例如,只有删除方法......你的答案也会一样吗?谢谢!

  • 404 当 请求的资源不可用时,"找不到"是合适的
  • 405 当资源不支持HTTP方法时,使用不允许的方法(例如,对于只读资源,可以允许GET,但不允许POSTPUTDELETE)。

当用户未指定subscriptionId时,请求的资源将被/customer-web/customers/{customerId}/subscription/
该资源可能存在(并列出所有订阅),也可能不存在(不绑定到该资源),在这种情况下,404 Not found是合适的

是的,这在逻辑上是不正确的。

假设您是客户,并且您有一些关于您自己的数据/信息。它们保存在数据库或其他数据存储中。现在,您将被视为该服务的用户。现在,该服务提供了一些功能,例如:他们可以为您提供有关您最喜欢的主题的最新消息。现在,您必须订阅该特定功能,以便获得通知。但是为了通知您,服务器首先必须为您订阅该事件/功能。每个数据库/数据存储的表行都有一个唯一的标识符,例如行号。现在,他们必须搜索该 Id/行号(假定行号作为您的用户 ID)以检查您是否是适用的用户。

如果他们找到您,那么他们会将您的身份验证程序 ID 或用户 ID 订阅到事件表的subscribedUser列,并将该事件订阅 ID 添加到您行的subscribedEvents列中。然后,如果您订阅了,那么他们会向您发送有关您最喜欢的主题或其他内容的通知。

在上面的故事中,为用户/客户创建订阅所必需的事情是:

客户 ID/用户
  • ID(这可以是该用户/客户的行索引号,将被推送到该事件的subscribedUser列)
  • 事件 ID(这可以是该事件的行索引号,它将用作订阅 ID,该索引号将被推送到该用户/客户行的subscribedEvent列)

现在,如果缺少上面的ID之一,那么您将搜索什么?也许你会有null|undefined,如果您不提供其中任何一个,行号或用户ID/EventID不能为空,因为它们是数字并且是唯一的。如此容易猜到,查询操作将返回空[]甚至null。空是一个虚假值。因此,服务器肯定会将此视为错误,并将404作为Not Found响应发送回。

但有一点,如果customerId用作 URI 的参数:parameter并且没有传递,那么 URL 将指向另一个端点并返回其他/不相关的响应。如果该终结点不存在,它将返回另一个 404 错误。subscriptionId也是如此.以上 criterea 仅适用于错误的customerIdsubscriptionId。现在,如果你不传递它们中的任何一个,那么地址将是错误的,如果该端点中不存在任何内容,则将发送404,如果端点存在,则发送其他响应。

相关内容

  • 没有找到相关文章

最新更新