2

ここでは、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"
}
4

1 に答える 1

3

send.groovy以下を含むファイルを作成しました。

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

次に、curl 経由で送信します。

$ 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 のままになるようにコンテンツをエンコードします (つまり、JSON では改行が許可されていないため、改行を "\n" に変更します)。

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+2\n"}
于 2016-12-02T12:38:41.293 に答える