关于Rest的Neo4j Cypher查询返回500响应

时间:2014-10-02 09:08:38

标签: neo4j cypher

我尝试向neo4j 2.1.3发送简单的Cypher查询并获得500响应:

POST : http://localhost:7474/db/data/cypher

data = {
  "query" : "MATCH (it) return it limit 10"
   }

尝试了不同的变体,包括以下标题:

   {'content-type': 'application/json',"Accept": 'application/json'}

所有人都得到了相同的500个http响应。

Btw ..常规Rest API请求,例如:http://localhost:7474/db/data/node可以正常工作..

2 个答案:

答案 0 :(得分:0)

不是100%但AFAIK http标头区分大小写,因此请尝试使用Content-Type代替content-type。如果您仍然获得500,请检查data/log和/或data/graph.db/messages.log是否有任何有用的条目。

答案 1 :(得分:0)

显然问题出在数据编码上。 不确定究竟是什么,但我在neo4j-rest-client code找到了它。

有编码功能。使用它,一切正常。

def _json_encode( data, ensure_ascii=False):

 def _any(data):
    ret = None
    if isinstance(data, (list, tuple)):
        ret = _list(data)
    elif isinstance(data, dict):
        ret = _dict(data)
    elif isinstance(data, decimal.Decimal):
        ret = str(data)
    elif isinstance(data, datetime.time):
        ret = data.strftime(options.TIME_FORMAT)
    else:
        ret = data
    return ret

 def _list(data):
    ret = []
    for v in data:
        ret.append(_any(v))
    return ret

 def _dict(data):
    ret = {}
    for k, v in data.items():
        # Neo4j doesn't allow 'null' properties
        if v is not None:
            ret[k] = _any(v)
    return ret
 ret = _any(data)
 return json.dumps(ret, ensure_ascii=ensure_ascii)