apoc.load.jsonParams
该过程的“Params”名称指的是连接到给定 URL 时 HTTP 请求的 headers 和 payload 被参数化,而不是 Neo4j 的 $ 参数。 |
语法 |
|
||
描述 |
如果给定的 JSON 文档是 |
||
输入参数 |
名称 |
类型 |
描述 |
|
|
要导入数据的文件名或二进制数据。请注意,URL 需要正确编码以符合 URI 标准。 |
|
|
|
连接到给定 URL 时使用的 HTTP 头。 |
|
|
|
连接到给定 URL 时发送的负载。 |
|
|
|
用于从 JSON 文档中提取特定子部分的 JSON 路径表达式(通过 JSONPath 表达式提取)。默认值为:``。 |
|
|
|
|
|
返回参数 |
名称 |
类型 |
描述 |
|
|
从给定文件加载的数据映射。 |
|
从文件读取
默认情况下,文件系统导入功能已禁用。我们可以通过在 apoc.conf 中设置以下属性来启用它:
apoc.import.file.enabled=true
如果我们尝试使用任何导入过程而没有首先设置此属性,我们将收到以下错误消息:
Failed to invoke procedure: Caused by: java.lang.RuntimeException: Import from files not enabled, please set apoc.import.file.enabled=true in your apoc.conf |
导入文件从 import 目录读取,该目录由 server.directories.import 属性定义。这意味着我们提供的任何文件路径都是相对于此目录的。如果尝试从绝对路径读取,例如 /tmp/filename,我们将收到类似以下内容的错误消息:
Failed to invoke procedure: Caused by: java.lang.RuntimeException: Can’t read url or key file:/path/to/neo4j/import/tmp/filename as json: /path/to/neo4j//import/tmp/filename (No such file or directory) |
我们可以通过在 apoc.conf 中设置以下属性来启用从文件系统中任何位置读取文件:
apoc.import.file.use_neo4j_config=false
|
Neo4j 现在将能够从文件系统中的任何位置读取,因此在设置此属性之前请确保这是您的意图。 |
使用示例
我们可以通过将配置参数 method 设置为 GET 来向 JSON 端点执行 GET 请求。
以下内容向 Wikipedia Action API 发出 GET 请求
CALL apoc.load.jsonParams(
"https://en.wikipedia.org/w/api.php?action=query&titles=Neo4j&format=json&formatversion=2",
{method: "GET"},
"",
"$.query.pages[0]"
) YIELD value
RETURN value
| value |
|---|
{ "title": "Neo4j", "ns": 0, "pageid": 25505874 } |
请注意,URL 需要正确编码。这可以使用 apoc.text.urlencode 来实现。
WITH apoc.text.urlencode("Auvergne-Rhône-Alpes") AS title
CALL apoc.load.jsonParams(
"https://en.wikipedia.org/w/api.php?action=query&titles="+title+"&format=json&formatversion=2",
{method: "GET"}, "", "$.query.pages[0]"
) YIELD value
RETURN value.title AS title, value.pageid AS pageid
| title | pageid |
|---|---|
Auvergne-Rhône-Alpes" |
45093325 |