将Groovy脚本作为文件发送到Gremlin Server REST API



在这里解释了如何使用其REST API与Gremlin服务器进行交互。使用以下命令,我执行相当简单的100-1脚本。

curl -X POST -d "{"gremlin":"100-1"}" "http://localhost:8182"

我想要的是而不是使用内联脚本,而是用script.groovy

定义它

我可以使它适用于这种情况,以定义整个脚本的变量:

GROOVY_LOAD_DATA_SCRIPT=$(<script.groovy)
curl -X POST -d "{"gremlin":"${GROOVY_LOAD_DATA_SCRIPT}"}" "http://localhost:8182"

,但是一旦我开始超越命令打破的单线:

{
    "message": "body could not be parsed"
}

我创建了一个名为 send.groovy的文件,其中包含:

{
    "gremlin": "x=1+1;x+3"
}

我通过卷曲发送:

$ curl -X POST --data-binary @send.groovy http://localhost:8182/gremlin
{"requestId":"6c0e7f3a-a16c-4fc1-a636-d462dc02b832","status":{"message":"","code":200,"attributes":{}},"result":{"data":[5],"meta":{}}}

如果您想在脚本本身中进行多行,则已经编码了内容,以使其保持有效的JSON(即更改您的行断裂为" n",因为JSON不允许线路破坏线路)。

请注意,您可以使用Python之类的工具将文件内容转换为有效的JSON:

$ cat /tmp/foo
println "Hello " + 'World!'
1+2
$ echo "{"gremlin":$(python -c 'import json, sys; print(json.dumps(sys.stdin.read()))' < /tmp/foo)}"
{"gremlin":"println "Hello " + 'World!'n1+2n"}

最新更新