我尝试向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
可以正常工作..
答案 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)