Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
单个请求请求太大或太多资源时的HTTP状态代码_Http_Rest_Http Status Codes_Restful Architecture - Fatal编程技术网

单个请求请求太大或太多资源时的HTTP状态代码

单个请求请求太大或太多资源时的HTTP状态代码,http,rest,http-status-codes,restful-architecture,Http,Rest,Http Status Codes,Restful Architecture,有人知道以下情况下哪个HTTP状态码是正确的吗 匿名客户端可以使用GET/collection/?range\u start=100&range\u end=200从RESTful API的集合中请求一系列项目。示例查询返回一个包含100项的列表(JSON格式)。对于客户端可以请求的项目数量也有一个限制,比如300个。如果客户机询问范围[1001100]内的1000个项目,响应状态代码应该是什么?这意味着超过限制700个项目 应该是400个错误请求、403个禁止、409个冲突、416个请求范围不

有人知道以下情况下哪个HTTP状态码是正确的吗

匿名客户端可以使用
GET/collection/?range\u start=100&range\u end=200
从RESTful API的集合中请求一系列项目。示例查询返回一个包含100项的列表(JSON格式)。对于客户端可以请求的项目数量也有一个限制,比如300个。如果客户机询问范围[1001100]内的1000个项目,响应状态代码应该是什么?这意味着超过限制700个项目

应该是400个错误请求、403个禁止、409个冲突、416个请求范围不可满足(?)还是422个不可处理实体?你推荐什么

一个相关的问答建议409,但情况略有不同:

这将始终产生400系列客户端错误。具体哪个错误由API/CGI开发人员选择。我期望的是405406416或者是“一网打尽”的417。api开发人员可以控制这些错误消息的文本(正文),以包含更多有用的信息。

403听起来是最合适的选择。它基本上是说“nu,呃,你看不到的。”,这里的情况就是这样

服务器理解请求,但拒绝满足请求。 授权没有帮助,请求不应重复。[……]

当然,回复机构最好包括您拒绝请求的原因

在我看来,所有其他代码都有特定的含义,因此无法在此处使用

400不太合适,因为请求是有效的,并且您完全理解它;这只是要求比你一次愿意发送的更多

409不合适,因为它与资源的“状态”特别相关。(这适用于您链接的问题,因为在这种情况下,错误是添加到已“满”的集合中。但是,在您的情况下,不是资源有问题,而是请求)

只有在预期用户可能能够解决冲突并重新提交请求的情况下,才允许使用此代码

其中,“重新提交”是指“重复”。在这种情况下,无论客户机做什么,该请求都将无效

416特别指的是“范围”标题,因此它完全不存在

417同样指的是一个标题字段(在本例中为“Expect”),因此它同样为out

422不合适,因为它特别表示您发送了一个语法正确但仍被破坏的实体。因为GET传统上没有请求主体(没有实体),所以没有什么是不可处理的。如果客户机正在发布请求,您可能几乎有理由……但是,您还必须很好地说明为什么RESTful API需要一个不更新任何内容的POST


(我大约47%确信,除了WebDAV之外,该代码也没有多大意义……但似乎确实存在可以想象的用例。只是不是这个。)

不,422不是WebDAV特有的。但这里的状态确实不正确。@JulianReschke:status code 422是在中定义的,它描述了WebDAV…我在其他任何地方都找不到。如果在我做与WebDAV无关的事情时,有一个服务器将此信息发送给我,我会非常惊讶,因为我甚至不知道RFC 2616中有代码存在赵:你应该查看IANA状态码注册表,而不是RFC2616。请看@JulianReschke:不过,同样的链接指向RFC4918。这段代码是为WebDAV编写的,我还没有看到任何东西在该上下文之外支持它的使用。@cHao:链接指向RFC 4918,因为它是在那里定义的。HTTP状态码是可扩展的;这就是为什么有一个注册中心。是的,422(和其他非RFC2616状态代码)在WebDAV之外的实践中使用。不,417不是“一网打尽”。它有一个非常具体的用例。