使用可选的 HTTP 尾随标头启用多部分 Gremlin 响应 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用可选的 HTTP 尾随标头启用多部分 Gremlin 响应

默认情况下,对 Gemlin 查询的 HTTP 响应将在单个 JSON 结果集中返回。如果是非常大的结果集,则可能导致OutOfMemoryError数据库实例上的异常。

但可以启用分块响应(在多个单独的部分中返回的响应)。您可以通过包含传输编码 (TE) 预告片标题来实现此目的 (te: trailers) 在您的请求中。请参阅关于 TE 请求标头的 MDN 页面) 了解有关 TE 标头的更多信息。

当响应分为多个部分返回时,很难诊断在收到第一部分之后发生的问题,因为第一部分到达时有 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 会跳过压缩。