我搜索了很多,但我找不到这个问题的好答案。作为 HATEOAS 的爱好者,我认为这个标题非常适合:
Range: item=1-20/100
在HTTP规范中,我不明白一些"矛盾":范围单位可以接受"其他范围单位"...
range-unit = bytes-unit | other-range-unit
bytes-unit = "bytes"
other-range-unit = token
。然而,该规范后来是明确的:
HTTP/1.1 定义的唯一范围单位是"字节"。HTTP/1.1 实现可能会忽略使用其他单位指定的范围。
最后,规范以以下语句结束:
HTTP/1.1 旨在允许实现不依赖于范围知识的应用程序。
- 除了字节之外,是否允许任何其他单位?
- 如果HTTP/1.1被设计为允许应用程序不依赖于范围,那么依靠它作为API的真正缺点是什么?
注意:我不在乎"可浏览性"。
在这里,由于@ptidel,我从这个问题中轻轻借用了答案:内容范围标题 - 允许的单位?
首先,本草案 HTTP/1.1 第 5 部分:范围请求和部分响应中提出了自定义单位
其次,有一个微妙的区别,第一个语句是为了解析目的而做的
range-unit = bytes-unit | other-range-unit
bytes-unit = "bytes"
other-range-unit = token
虽然第二个语句是为生成 HTTP 请求而做出的。
最后,费伦茨·米哈里的整个评论完美地总结了这种情况:
我在发送[自定义范围单位]时符合HTTP规范,而当他们忽略HTTP时,它们符合HTTP
WebDAV正确使用HTTP扩展,IMO,但由于这个原因,很少在互联网上工作。
大多数情况下,您不希望默认显示所有项目。对于 ?p=2 样式页面,可以为第一页保留根/。使用"范围"标题,这将是奇怪的行为。HTTP很久以前就变得过于臃肿了,所以我不建议接受它的每一个标头作为真理。