使用 Gremlin.Net 获取请求数据

Getting request data with Gremlin.Net

我正在使用 Gremlin.Net & Neptune,有时一些请求会失败,错误消息中没有太多信息 (InternalFailureException)。
我想尝试通过 curl 将请求发送到服务器的“/gremlin/explain”URL 以获取更多信息。
由于我使用 GraphTraversal class 构建请求(而且它很长),我正在寻找一种方法来获取与发送的请求等效的 gremlin 命令。
有什么简单的方法可以得到吗?
有没有其他方法可以理解 Neptune 请求失败的原因?

我假设您希望获得查询的字符串表示形式,以便您可以 POST 将其 /gremlin/explain API。使用 Java 和 Javascript 可以相当直接地使用 . Of course, for .NET and Python such things 描述的 TinkerPop 的 Translator 函数来完成这样的事情。

由于您的情况听起来您只需要一个一次性解决方案来使用 "explain" 进行一些分析,您可以获得 .NET 中字节码的 GraphSON 表示,使用 Gremlin Console's :bytecode command 将其转换到 String 表示。

所以,首先获取 Bytecode 对象作为 GraphSON:

var bytecode = g.V().Out("knows").Bytecode;
var writer = new GraphSON3Writer();
var graphSON = writer.WriteObject(bytecode)

Copy/paste "graphSON" 串入 Gremlin 控制台:

gremlin> g = TinkerGraph.open().traversal()
==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]
gremlin> :bytecode translate g {"@type":"g:Bytecode","@value":{"step":[["V"],["out","knows"]]}}
==>g.V().out("knows")

请注意,我在那里使用 TinkerGraph 作为重建遍历的主机。