我浏览了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(方法不允许)
答案 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());