本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用可选的HTTP尾随标头启用由多部分组成的 Gremlin 响应
默认情况下,对 Gremlin 查询的HTTP响应以单个JSON结果集返回。如果结果集非常大,这可能会导致数据库实例出现 OutOfMemoryError
异常。
但是,您可以启用分块响应(以多个单独部分返回的响应)。您可以通过在请求中包含传输编码 (TE) 尾随标头 (te: trailers
) 来实现此目的。有关 TE 标头的更多信息,请参阅有关 TE 请求标头的MDN页面
当响应分成多个部分返回时,可能很难诊断在收到第一部分之后出现的问题,因为第一部分的HTTP状态码为 200
(OK)。随后的失败通常会导致消息正文包含损坏的响应,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 会跳过压缩。