通过RestAPI

时间:2015-10-07 16:48:17

标签: java neo4j jersey graph-databases

我浏览了Neo4j文档并尝试使用Graph数据库开发项目。我们知道它们是通过嵌入式方式或RestAPI来解决Neo4j DB的双向方式。嵌入式方式适用于RestAPI中的所有问题。

http://neo4j.com/docs/stable/server-java-rest-client-example.html

我创建了一个java客户端,使用Jersey作为文档提及。一切都有效,除非我尝试删除所有节点和关系。它的状态代码是405.我能理解即使我给/ transaction / commit URL它也会抛出这个错误。

String SERVER_ROOT_URI = "http://localhost:7474/db/data/";
this.SERVER_ROOT_URI = SERVER_ROOT_URI + "transaction/commit";
this.resource = Client.create().resource(SERVER_ROOT_URI);

String cql = "MATCH (n) OPTIONAL MATCH (n)-[r]";
ClientResponse response = resource.accept( MediaType.APPLICATION_JSON ).type( MediaType.APPLICATION_JSON ).entity(this.getPayload(cql)).post(ClientResponse.class );


System.out.println("Response state:"+response.getStatus());

输出:405(方法不允许)

2 个答案:

答案 0 :(得分:0)

我不太确定,但"MATCH (n) OPTIONAL MATCH (n)-[r]"查询不是发送REST API的DELETE请求。我认为API将查询识别为GET或POST请求。

编辑: 在Github中提出这个issue。愿它有所帮助

答案 1 :(得分:0)

您必须将实际操作或返回值添加到您的密码查询中。

MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r

否则在http级别上您的请求看起来不错。

确保在完成后关闭响应。

String SERVER_ROOT_URI = "http://localhost:7474/db/data/";
this.SERVER_ROOT_URI = SERVER_ROOT_URI + "transaction/commit";
this.resource = Client.create().resource(SERVER_ROOT_URI);

String cql = "MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r";
ClientResponse response = resource.accept( MediaType.APPLICATION_JSON ).type( MediaType.APPLICATION_JSON ).entity(this.getPayload(cql)).post(ClientResponse.class );


System.out.println("Response state:"+response.getStatus());