首页 > 代码库 > java连接neo4j之rest api

java连接neo4j之rest api

neo4j连接java目前主要有嵌入式、jdbc和rest api。

以neo4j文档的Jersey为例(实际有多种方式可以实现,目前觉得Jersey实现比较麻烦点,其他的都有封装好请求)。

使用的lib包:jersey-bundle-1.17.jar(这个比较不好找)和Jersey提供的包

    String SERVER_ROOT_URI = "http://localhost:7474/db/data/";        final String nodeEntryPointUri = SERVER_ROOT_URI + "node";        WebResource resource = Client.create()                .resource( nodeEntryPointUri );        // POST {} to the node entry point URI        //通过post请求新建一个节点        ClientResponse response = resource.accept( MediaType.APPLICATION_JSON )                .type( MediaType.APPLICATION_JSON )                .entity( "{}" )                .post( ClientResponse.class );                 final URI location = response.getLocation();        System.out.println( String.format(                "POST to [%s], status code [%d], location header [%s]",                nodeEntryPointUri, response.getStatus(), location.toString() ) );        response.close();        System.out.println(location.toString());                String propertyUri = location.toString() + "/properties/" + "name";        // http://localhost:7474/db/data/node/{node_id}/properties/{property_name}                 WebResource propertyResource = Client.create()                .resource( propertyUri );        //根据拿回来的节点url,设置节点的属性        ClientResponse response1 = propertyResource.accept( MediaType.APPLICATION_JSON )                .type( MediaType.APPLICATION_JSON )                .entity( "\"Joe Strummer\"")                .put( ClientResponse.class );                 System.out.println( String.format( "PUT to [%s], status code [%d]",                propertyUri, response1.getStatus() ) );        response.close();

jersey这种方式个人觉得不是很好使用,在创建一个节点时不能把属性加入进去,必须是{},然后在根据拿回来的节点url加入属性,比较繁琐,但是根据权重计算最短路径时,如果想使用服务式的neo4j。

java连接neo4j之rest api