REST API中的HTTP状态代码,用于使用GET查询“尚未准备好,请稍后再试”资源?

RayLuo

首先,我阅读了一些相关的文章:

但是我仍然认为我应该在这里提出我的问题和想法。REST API中用于使用GET查询“尚未准备好,请稍后再试”资源的HTTP状态代码应该是什么?例如,客户端尝试通过对该URL进行HTTP GET来查询将来发生的所有本地新闻(!):http : //example.com/news ? city= chicago& date= 2099-12-31因此服务器应回复什么? ?

这些是我考虑过的http状态代码,它们的rfc定义以及为什么我不完全满意:

  • 3xx重定向。注释:因为没有其他链接可以重定向到,所以这不是一个选择。

  • 503服务不可用:由于服务器的暂时超载或维护,服务器当前无法处理该请求。言外之意是,这是一个暂时的状况,经过一段时间的延迟后会缓解。如果知道的话,延迟的长度可以在Retry-After头中指出。评论:重试行为是理想的,但是从语义上讲,这根本不是服务器的错误,因此所有5xx看起来都很奇怪。

  • 4xx客户端错误。评论:看起来很有希望。见下文。

  • 413请求实体太大:服务器拒绝处理请求,因为请求实体大于服务器愿意或能够处理的大小。如果条件是暂时的,服务器应该包括一个Retry-After头域,以指示它是暂时的,并且在什么时间之后客户端可以重试。评论:重试行为是所希望的,但是“实体太大”部分会产生误导。

  • 417期望失败:此服务器无法满足在“期望”请求标头字段(请参见第14.20节)中给出的期望。评论:因此,它应该是由Expect请求标头引起的,不适用于我的情况。

  • 406不可接受:根据请求中发送的接受标头,资源...不可接受。评论:因此,它是由Accept请求标题引起的,不适用于我的情况。

  • 409冲突:由于与资源的当前状态冲突,请求无法完成。仅在预期用户可能能够解决冲突并重新提交请求的情况下才允许使用此代码。...响应PUT请求最有可能发生冲突。评论:这是关闭的。尽管我的情况与PUT无关,并且实际上不是由冲突引起的。

  • 找不到404:服务器找不到与请求URI匹配的任何内容。评论:从技术上讲,我的网址路径(http://example.com/news)存在,它是引起问题的参数。在这种情况下,返回空集合而不是404可能更合适。

  • 403禁止访问:服务器理解了该请求,但拒绝执行该请求。授权将无济于事,并且不应重复该请求。评论:通常应该在任何受限资源中使用它?

  • 400错误的请求:由于语法格式错误,服务器无法理解该请求。客户不应在没有修改的情况下重复请求。评论:这不是我的情况。我的服务器理解请求,它的语法很好,只有含义不好。

  • 2xx成功。评论:如果4xx不起作用,那么2xx呢?见下文。

  • 200 OK。评论:很好。那么我应该在响应正文中包括什么?null或[]或{}或{“ date”:“ 2099-12-31”,“ content_list”:null}或...哪个更直观?另一方面,我更喜欢一种方法来区分较小的“未来新闻”错误与更常​​见的“所有查询条件都很好,今天就没有新闻”的情况。

  • 202 Accepted:请求已被接受进行处理,但是处理尚未完成。该请求最终可能会执行,也可能不会最终执行。注释:假设我们可以在GET请求中使用202,则可以接受。然后参考200注释。

  • 204无内容:服务器已完成请求,但不需要返回实体。注释:假设我们可以在GET请求中使用204,则可以接受。只是不知道这是否比202或200好。

  • 有关2xx的更多信息:注释:我认为所有2xx响应都可能会缓存在某个地方。但就我而言,如果我为“明天的新闻”返回一个空的正文,则我不希望将其缓存。好的,明确指定“ no cache”标题应该有所帮助。

你的意见?

科马克·穆哈尔(Cormac Mulhall)

您正在检索当天的消息,这是有效的一天,没有任何消息。空体的200个响应或基于mediatype的有意义的响应似乎是合乎逻辑的。这取决于您与客户端决定的媒体类型。

如果日期格式错误(您要求输入11月45日,或要求输入不存在的城市),则404更为有意义。

另外,URL最好采用http://example.com/news/chicago/2099-12-31格式,因为这是您要检索的特定资源。这种格式也会使类似404的内容更加清晰。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

错误:java.io.IOException:表命名空间管理器尚未准备好,请稍后再试

来自分类Dev

错误:java.io.IOException:表命名空间管理器尚未准备好,请稍后再试

来自分类Dev

使用Rest API返回http状态代码

来自分类Dev

数据尚未准备好从Stream中读取

来自分类Dev

Qt Qcamera尚未准备好

来自分类Dev

Qt Qcamera尚未准备好

来自分类Dev

Cordova插件尚未准备好

来自分类Dev

REST API和HTTP状态代码

来自分类Dev

如果在发布子资源时资源不存在,在 REST API 中使用哪个 HTTP 状态代码?

来自分类Dev

REST API中搜索的响应状态代码

来自分类Dev

资源可用和不可用的Http REST状态代码

来自分类Dev

移至SSD并获得“用于/的磁盘驱动器尚未准备好”的信息

来自分类Dev

移至SSD并获得“用于/的磁盘驱动器尚未准备好”的信息

来自分类Dev

PHP 中的 Cookie 未准备好

来自分类Dev

REST API 的用户资源

来自分类Dev

如果父资源不存在,则在REST API中为子资源使用哪个HTTP代码?

来自分类Dev

递归到无穷远,尚未准备好

来自分类Dev

AWS您的帐户尚未准备好发布消息

来自分类Dev

TeamViewer:尚未准备好。检查您的连接

来自分类Dev

TeamViewer:尚未准备好。检查您的连接

来自分类Dev

lpq:“ hplj1320n尚未准备好”

来自分类Dev

PostgreSQL 端口尚未准备好执行 ansible 任务

来自分类Dev

REST中的资源不支持操作时的HTTP状态代码404或501

来自分类Dev

AngularJS指令的link()函数中尚未准备好DOM元素

来自分类Dev

用于上游服务故障的REST API状态代码?

来自分类Dev

Marklogic REST API 查询

来自分类Dev

使用REST API查询Gerrit?

来自分类Dev

REST API最佳HTTP状态响应,用于非法操作

来自分类Dev

用于克隆资源的REST API设计

Related 相关文章

  1. 1

    错误:java.io.IOException:表命名空间管理器尚未准备好,请稍后再试

  2. 2

    错误:java.io.IOException:表命名空间管理器尚未准备好,请稍后再试

  3. 3

    使用Rest API返回http状态代码

  4. 4

    数据尚未准备好从Stream中读取

  5. 5

    Qt Qcamera尚未准备好

  6. 6

    Qt Qcamera尚未准备好

  7. 7

    Cordova插件尚未准备好

  8. 8

    REST API和HTTP状态代码

  9. 9

    如果在发布子资源时资源不存在,在 REST API 中使用哪个 HTTP 状态代码?

  10. 10

    REST API中搜索的响应状态代码

  11. 11

    资源可用和不可用的Http REST状态代码

  12. 12

    移至SSD并获得“用于/的磁盘驱动器尚未准备好”的信息

  13. 13

    移至SSD并获得“用于/的磁盘驱动器尚未准备好”的信息

  14. 14

    PHP 中的 Cookie 未准备好

  15. 15

    REST API 的用户资源

  16. 16

    如果父资源不存在,则在REST API中为子资源使用哪个HTTP代码?

  17. 17

    递归到无穷远,尚未准备好

  18. 18

    AWS您的帐户尚未准备好发布消息

  19. 19

    TeamViewer:尚未准备好。检查您的连接

  20. 20

    TeamViewer:尚未准备好。检查您的连接

  21. 21

    lpq:“ hplj1320n尚未准备好”

  22. 22

    PostgreSQL 端口尚未准备好执行 ansible 任务

  23. 23

    REST中的资源不支持操作时的HTTP状态代码404或501

  24. 24

    AngularJS指令的link()函数中尚未准备好DOM元素

  25. 25

    用于上游服务故障的REST API状态代码?

  26. 26

    Marklogic REST API 查询

  27. 27

    使用REST API查询Gerrit?

  28. 28

    REST API最佳HTTP状态响应,用于非法操作

  29. 29

    用于克隆资源的REST API设计

热门标签

归档