HTTP响应代码用于休息 - 未找到子资源(但未由标识符引用)



我正在构建一个REST API,并在返回响应代码周围有一个困境,以进行GET操作。我在网上找到了许多示例和答案,但没有针对我的特定情况。这是我到目前为止发现和理解的内容:

  1. 如果返回一个空列表(例如/library/authors/{fureId}/books (带有响应代码200的空列表将足够

  2. 如果请求具有ID的特定资源(例如/library/authors/{fureId}/books/{bookid} (,使用404

    将响应为空

总结了我的大多数用例,我很好。

但是,如果我访问没有ID的子资源,会发生什么?

例如,出于争论的缘故,假设作者可以拥有很多书,但只有一本自动批学。他要么有一个,要么没有。我不希望用户通过自动二级联运ID传递,因为该系统可以自行弄清楚是否存在,端点就是这样:

get/library/authors/{fureId}/自动二人

如果作者存在但他没有自传(这是无效的(,HTTP响应代码是否为:

  • 204 (空内容(
  • 404 (资源不存在(

预先感谢您!

通过语义工作

GET /library/authors/1/auto-biography

/library/authors/1/auto-biography是标识符。资源本身是一些概念,例如"作者1的自动传记";请注意,即使可能实际上还不存在,我们也可以谈论它。

资源可以映射到空集,该集合允许在该概念的任何实现之前对概念进行引用

http响应正文中出现的事物不是资源,而是资源的表示。

所以现在查看状态代码

404

404(未找到(状态代码表明原始服务器没有找到目标资源的当前表示形式,或者不愿意透露一个存在。

204

204(无内容(状态代码表明服务器已成功满足了请求,并且没有其他内容可以发送到响应有效负载主体中。

一个松散的类比:假设您尝试获取文件的内容。404在语义上与FileNotFound对齐;204表示文件长为零。

404通常会伴随着"包含错误情况的说明的表示形式,以及它是暂时的还是永久的。"这表明客户端试图使用不可用的链接。

另一方面,

204没有任何东西 - 表示为零字节长,如何有数据。这是200响应的特殊情况,建议客户(和中介组件(有意将响应主体留为空白。

相关内容

  • 没有找到相关文章

最新更新