neo4j 数据库使用 Bolt 转换 RestApi 请求结果格式

在做图数据库的数据库可视化的时候,使用到了 eisman/neo4jd3这个可视化库,查看了一下其数据格式,发现和 neo4j 自带的 RestApi 接口大致一致
d3 库数据格式为👇,
1 | { |
而 neo4j RestAPI 返回的数据为↓,可以看到两者的格式还是有些地方不一样的
1 | { |
使用 postman 请求 Neo4j REST API 文档
- 这里用到的接口
/db/data/transaction/commit
- POST body
1 | { |
这里要加上鉴权,以及请求头 Content-Type: application/json
这样就可以得到上边的结果,可以使用 neo4jd3 对数据渲染
由于在系统中已经使用了 bolt 的连接方式,于是尝试使用 neo4j.ogm
驱动中的 session 去请求查询,将结果转换,返回和 RestApi 一样的结果
在 springboot
中可以直接取得 SessionFactory
(编码使用的是 kotlin)
1 |
|
声明一个结果类
1 | class QueryRest { |
ServerImpl
初步实现的效果,直接传递
Cypher
语句并不严谨,可能会存在注入问题
1 | override fun query(sql: String): QueryRest.results { |
over
2020/12/22 更新
使用过程中发现 ogm 的一个 TODO,是否自动映射 Bean,现在我使用的 neo4j-ogm-bolt-driver:3.2.18
默认是开启映射的,所以上方的转换代码可能会出现一些问题,影响到我们功能的使用。Are we going to use the neo4jOperations conversion method to cast the value object to its proper class?
1 | /** |
通过 Debug neo4j-ogm 源代码,找到自动转换的类,发现无法使用重写解决,经过研究 Neo4jSession
的类变量,针对这个问题,对原有的 handlers
做了如下更改:
1 | private fun handlers(grep: org.neo4j.ogm.model.Result): QueryRest.results { |
- 标题: neo4j 数据库使用 Bolt 转换 RestApi 请求结果格式
- 作者: tsvico
- 创建于 : 2020-12-22 22:27:26
- 更新于 : 2021-03-06 20:21:07
- 链接: https://blog.tbox.fun/2020/e526b597.html
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。