Neo4j的Rest介面使用

NO IMAGE

Neo4j的服務除了提供了基於java的客戶端驅動包,同時也支援我們通過rest服務訪問它,這一點非常便捷,意味著任何支援http訪問的程式語言都可以使用cypher的rest來訪問neo4j,同時支援http報文以streaming的形式的返回資料,以獲得更好的效能,並大幅度節省記憶體,當然前提是需要我們在每個request請求中在header中加入:

X-Stream: true

預設想要訪問neo4j服務,是需要授權認證的,第一次安裝的 neo4j在登入(http://localhost:7474)時是需要改密碼的,預設是neo4j:neo4j,改完密碼之後,每次登入需要驗證使用者名稱和密碼的。

1,執行單個cpyher語句事務的http請求

查詢neo4j節點總數的例子

curl http://192.168.10.31:7474/db/data/transaction/commit -u neo4j:dong -H "Content-Type: application/json"  -d '{"statements" : [ {    "statement" : "match (n) return count(n)" } ]}'

返回的結果如下:

{
"results": [
{
"columns": [
"count(n)"
], 
"data": [
{
"row": [], 
"meta": []
}
]
}
], 
"errors": [ ]
}

注意上面的curl語句裡面:

(1)需要加上使用者名稱和密碼,如果開啟了許可權認證

(2)要設定內容型別為json資料,同時採用了post請求

此外,如果不需要保持開啟的事務橫跨多個http請求,我們可以使用開啟單個事務,然後執行cypher語句,最後提交僅僅單個http請求中。

2,執行多個cpyher語句事務的http請求

我們在同一個http請求中也可以傳送多個cpyher語句,響應的結果體中會包含每個cpyher語句結果。

一個例子如下:

POST http://localhost:7474/db/data/transaction/commit
Accept: application/json; charset=UTF-8
Content-Type: application/json

post請求體

{
"statements" : [ {
"statement" : "CREATE (n) RETURN id(n)"
}, {
"statement" : "CREATE (n {props}) RETURN n",
"parameters" : {
"props" : {
"name" : "My Node"
}
}
} ]
}

響應:

{
"results" : [ {
"columns" : [ "id(n)" ],
"data" : [ {
"row" : [ 56 ],
"meta" : [ null ]
} ]
}, {
"columns" : [ "n" ],
"data" : [ {
"row" : [ {
"name" : "My Node"
} ],
"meta" : [ {
"id" : 57,
"type" : "node",
"deleted" : false
} ]
} ]
} ],
"errors" : [ ]
}

3,回滾開啟的事務

DELETE http://localhost:7474/db/data/transaction/36
Accept: application/json; charset=UTF-8

響應的結果:

{
"results" : [ ],
"errors" : [ ]
}

注意上面是一個delete的rest請求。

4,開啟查詢的系統統計資訊

POST http://localhost:7474/db/data/transaction/commit
Accept: application/json; charset=UTF-8
Content-Type: application/json

請求體如下:

{
"statements" : [ {
"statement" : "CREATE (n) RETURN id(n)",
"includeStats" : true
} ]
}

請求結果如下:

{
"results" : [ {
"columns" : [ "id(n)" ],
"data" : [ {
"row" : [ 58 ],
"meta" : [ null ]
} ],
"stats" : {
"contains_updates" : true,
"nodes_created" : 1,
"nodes_deleted" : 0,
"properties_set" : 0,
"relationships_created" : 0,
"relationship_deleted" : 0,
"labels_added" : 0,
"labels_removed" : 0,
"indexes_added" : 0,
"indexes_removed" : 0,
"constraints_added" : 0,
"constraints_removed" : 0
}
} ],
"errors" : [ ]
}

總結:

neo4j服務暴露的http rest介面還是非常不錯的,本篇文章簡單的介紹了通過curl呼叫neo4j的方法,如果深入學習或者研究,可以參考官網文件https://neo4j.com/docs/developer-manual/current/http-api/

有什麼問題可以掃碼關注微信公眾號:我是攻城師(woshigcs),在後臺留言諮詢。 
技術債不能欠,健康債更不能欠, 求道之路,與君同行。