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

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

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

默认情况下,Gremlin 查询的 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 会跳过压缩。