在尝试卷曲Neo4j时,您必须提供查询参数

时间:2015-08-08 18:18:44

标签: curl neo4j

我收到此错误消息:

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命令工作?

1 个答案:

答案 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参数。