微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

apoc.load.jsonParams 作为带有 Body 输入参数的 POST 请求

如何解决apoc.load.jsonParams 作为带有 Body 输入参数的 POST 请求

apoc.load.jsonParams 的 Neo4j 文档中,有一个如何发出 POST 请求的示例:

CALL apoc.load.jsonParams(
  "https://neo4j.com/docs/search/",{method: "POST"},apoc.convert.toJson({query: "subquery",version: "4.0"})
);

但不幸的是,这对我来说还不够,因为我还需要一个带有 POST 请求参数的主体:

[HttpPost("getJson")]
[Produces("application/json")]
public async Task<JsonResult> GetJson(int id,[FromBody] List<string> params)

我的尝试:

CALL apoc.load.jsonParams("http://192.168.1.128:4040/api/getJson?id=17","$.BusinessData[*]") YIELD value WITH ["DATA1","DATA2"] as body return *

错误信息:

Failed to invoke procedure `apoc.load.jsonParams`: Caused by: java.lang.RuntimeException: Can't read url or key http://192.168.1.128:4040/api/getJson?id=17 as json: Server returned HTTP response code: 500 for URL

那么 apoc 调用必须如何完成 POST 请求?

解决方法

来自 apoc.load.jsonParams 文档:

apoc.load.jsonParams(urlOrKey :: STRING?,headers :: MAP?,payload :: STRING?,path = :: STRING?,config = {} :: MAP?) :: (value :: MAP?)

将正文作为有效负载参数传输并使用 apoc.convert.toJson 将其转换为 Json 字符串列表。还需要在标头中将 Content-Type 定义为 application/json。 (不要忽略反引号)

CALL apoc.load.jsonParams("http://192.168.1.128:4040/api/getJson?id=17",{`Content-Type`:"application/json"},apoc.convert.toJson(["DATA1","DATA2"]),"$.BusinessData[*]") YIELD value as item

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。