为什么大多数 API 分页不依赖 HTTP Range 标头?

2024-04-19

我搜索了很多,但找不到这个问题的好的答案。 作为 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 https://twitter.com/Ptidel: 内容范围标头 - 允许的单位? https://stackoverflow.com/questions/9480193/content-range-header-allowed-units.

首先,本草案提出了自定义单位HTTP/1.1,第 5 部分:范围请求和部分响应 http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p5-range-18.html#range.units

其次,有一个微妙的区别,第一个语句是为了解析目的而做出的

    range-unit       = bytes-unit | other-range-unit
    bytes-unit       = "bytes"
    other-range-unit = token

第二条语句是用来产生 HTTP 请求的。

最后,来自费伦茨·米哈利 https://stackoverflow.com/users/981240/ferenc-mihaly完美总结了情况:

当我发送[自定义范围单位]时,我遵守 HTTP 规范,而当他们忽略它时,我遵守 HTTP 规范

在我看来,WebDAV 正确使用 HTTP 扩展,但正是由于这个原因,它很少在 Internet 上工作

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么大多数 API 分页不依赖 HTTP Range 标头? 的相关文章

随机推荐

  • C++/CLI:#pragma 托管/非托管范围

    我有一个混合模式 DLL 其中有一个包含托管和非托管代码的 cpp 文件 一个简化的重现示例如下所示 include stdafx h pragma managed Just for explicitness doesn t influen
  • 如何从 launch.json 传递带有特殊字符的参数?

    我试图通过 launch json 将参数传递给我的 Python 程序 并且我的参数之一需要特殊字符 因为它是密码 我计划添加更安全的方式来输入密码 但这不是重点 这是我的 launch json 密码已更改 但仍带有特殊字符 Use I
  • 通过 Paramiko SSH 的 SQLAlchemy

    我的服务器上有一个数据库 我需要通过 SSH 访问该数据库 现在我通过使用命令行来获取数据来处理数据库 import paramiko ssh paramiko SSHClient ssh set missing host key poli
  • Mockito 并不是在嘲笑电话

    我正在测试的功能之一是通过 ssh 登录到一台机器 我想模拟 ping 方法 它实际上尝试 ssh 进入机器 因为我并没有真正 ssh 进入机器 我正在测试的类 public class TestMachine public int pin
  • 如何阻止UITextView进入时向上滚动

    我有一个UITextView包含在一个UITableViewCell 最初显示视图时布局是正确的 但是一旦我单击UITextView它会自动向上滚动一点 第一行的上半部分字符变得不可见 这张图是当UITextView不活跃 UITextVi
  • NSDateFormatter 获取 Null

    我在我的项目中得到一个字符串 我将字符串传递给 dateFormatter 但我得到 nil 在字符串中而不是IST我可能会得到PDT我可能会得到任何其他格式 NSString currentDateString 2012 11 09 12
  • 分割scrapy的大CSV文件

    是否可以使 scrapy 写入每个不超过 5000 行的 CSV 文件 我怎样才能给它一个自定义的命名方案 我应该修改吗CsvItemExporter 尝试这个管道 coding utf 8 Define your item pipelin
  • “setIndentationLeft”不是“iTextsharp.text.Paragraph”的成员

    我正在添加出现错误的段落 p setindentationLeft 不是 itextsharp text paragraph 的成员 Dim bf As BaseFont BaseFont CreateFont Dim p As New P
  • MVC WebGrid 是开源的吗?

    MVC WebGrid 是开源的吗 如果可以的话哪里可以找到源代码 当前版本的 WebGrid 几乎没有文档 实现不完整等 我正在尝试做一件简单的事情 即向视图中的 WebGrid Column 添加可见性属性 但这是不可能的 您可以下载A
  • 如何在字符串中使用变量

    我正在尝试在字符串中实现变量 我已经搜索过这个并尝试向它扔不同的东西 但似乎没有任何效果 我有一个如下所示的变量 http localhost 8080 Editor name Default 我使用以下方法获取值没有问题 function
  • Dataflow 2.1.0 中是否有 IntrabundleParallelization 的替代方案?

    根据 dataflow 2 X 的发行说明 IntraBundleParallelization 已被删除 有没有办法控制 增加数据流 2 1 0 上 DoFns 的并行度 当我在 1 9 0 版本的数据流上使用 IntrabundlePa
  • 带百分比的 CSS 位置

    我在另一个 div 中相对位置 div 时遇到问题 我想制作一个位于屏幕水平中间的 div 并在这个 div 中我想放置 3 个具有相同高度的其他 div 但他们所有人都应该做出反应 图片胜于雄辩 div div class row div
  • 警告似乎指向不同的对象地址

    我正在使用 PySide 当我尝试将电子表格设置为某个小部件时收到警告 09 18 14 48 54 107 WARNING D 0x7ff4a0074650 qt Could not parse stylesheet of widget
  • Python os.chdir() 似乎不起作用

    我似乎无法更改 python 中的目录 import os os getcwd C Users Jon Folder IdbyGenotype os chdir r C Users Jon Folder IdbyGenotype thiso
  • Typescript `typeof React.Component` 不扩展接口?定义高阶组件时遇到问题

    我正在创建一个高阶组件来包装扩展接口的组件 interface ClickOutsideInterface onClickOutside e Event gt void 我创建的工厂期望React ComponentClass实施Click
  • 在 Android 上使用 obgenesis 时出现 NoClassDefFoundError

    我正在开发一个 Android 应用程序 它使用com rits cloning and org objenesis 深度克隆对象的库 目的是将相同的对象添加到我的树结构类中两次或多次 而不必担心原始对象引用相同的对象 自从定期clone
  • 重新启动在 Apache + mod_python 上运行的 Django 应用程序

    我正在 Apache mod python 上运行 Django 应用程序 当我对代码进行一些更改时 有时它们会立即生效 有时则不会 直到我重新启动 Apache 然而 我真的不想这样做 因为它也是一个运行其他东西的生产服务器 还有其他方法
  • 在 ListTile 中放置两个尾随图标

    我想将两个图标并排放置在 ListTile 的 尾随 一侧 我尝试添加一个 Row 小部件 其中包含两个图标 但它完全搞乱了整个 ListTile 的布局 使其无法使用 有什么办法可以扩大分配给尾部部分的空间吗 这是代码 import pa
  • 在 Java Runtime.getRuntime().exec(...) 中使用引号和双引号

    我正在尝试在 Mac OSX 中从 Java 启动 Lisp 映像 使用控制台中的图像 我输入以下内容 lisp image eval package method some argument 一切都运行良好 在Java中 我在使用传递引号
  • 为什么大多数 API 分页不依赖 HTTP Range 标头?

    我搜索了很多 但找不到这个问题的好的答案 作为 HATEOAS 爱好者 我认为这个标题非常适合 Range item 1 20 100 在HTTP规范中 我不明白一些 矛盾 范围单位可以接受 其他范围单位 range unit bytes