我收到此错误消息:
You have to provide the 'query' parameter ...
当我尝试使用Neo4j
rest api时。我这样做是通过curl
:
$ curl 'http://neo4j:root@127.0.0.1:7474/db/data/cypher' -d '
{
"query": "START n=node(*) RETURN distinct labels(n)", "params":{}
}'
但是,如果我使用Python
中的一个库以编程方式运行相同的查询,那么它没问题 - 我得到了一些结果。那么,我还应该指定什么来使我的curl
命令工作?
答案 0 :(得分:3)
Neo服务器期望内容类型application/json
可以在您的客户端默认指定,但不能在cURL中指定。直接使用-H
参数为cURL指定内容类型应该可以,比如
$ curl -X POST -H 'Content-type: application/json' \
'http://neo4j:root@127.0.0.1:7474/db/data/cypher' -d '
{
"query": "START n=node(*) RETURN distinct labels(n)", "params":{}
}'
在我的机器上:
[~/apps/neo]$ curl -X POST -H 'Content-type: application/json' 'http://neo4j:root@127.0.0.1:7474/db/data/cypher' -d '
{
"query": "START n=node(*) RETURN distinct labels(n)", "params":{}
}'
{
"columns" : [ "labels(n)" ],
"data" : [ [ [ "Movie" ] ], [ [ "Person" ] ], [ [ "PublicDomain" ] ] ]
}
如果没有内容类型标题,我会看到您犯的错误。
有趣的是,正如您在评论中指出的那样,您可以在没有cURL的-X POST
选项的情况下调用此请求。这是因为存在强制POST方法的-d
参数。