簡體   English   中英

將groovy腳本作為文件發送到Gremlin Server REST API

[英]Send groovy script as a file to the Gremlin Server REST API

此處說明了如何使用其REST API與Gremlin Server進行交互。 使用以下命令,我將執行非常簡單的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發送它:

$ 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"}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM