本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用可选的 HTTP 尾随标头启用多部分 Gremlin 响应
默认情况下,对 Gemlin 查询的 HTTP 响应将在单个 JSON 结果集中返回。如果是非常大的结果集,则可能导致OutOfMemoryError
数据库实例上的异常。
但可以启用分块响应(在多个单独的部分中返回的响应)。您可以通过包含传输编码 (TE) 预告片标题来实现此目的 (te: trailers
) 在您的请求中。请参阅关于 TE 请求标头的 MDN 页面
当响应分为多个部分返回时,很难诊断在收到第一部分之后发生的问题,因为第一部分到达时有 HTTP 状态代码200
(好)。随后的故障通常会导致消息正文包含损坏的响应,最后 Neptune 会附加一条错误消息。
为了更容易检测和诊断此类故障,Neptune 还在每个响应块的尾随标题中包含两个新的标题字段:
X-Neptune-Status
— 包含响应代码后跟短名称。例如,成功的情况下,尾随标题将是:X-Neptune-Status: 200 OK
. 如果失败,响应代码将是其中之一。Neptune 引擎错误代码之外的压缩算法(例如X-Neptune-Status: 500 TimeLimitExceededException
.X-Neptune-Detail
— 对于成功的请求为空。在出现错误的情况下,它包含 JSON 错误消息。由于 HTTP 标头值中只允许使用 ASCII 字符,因此 JSON 字符串是 URL 编码的。
Neptune 目前不支持gzip
压缩分块响应。如果客户端同时请求分块编码和压缩,Neptune 会跳过压缩。