【问题标题】:apoc.load.jsonParams as POST request with Body input parametersapoc.load.jsonParams 作为带有正文输入参数的 POST 请求
【发布时间】:2021-03-23 08:08:51
【问题描述】:

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",{method: "POST"}, "$.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 请求?

【问题讨论】:

    标签: c# rest post neo4j neo4j-apoc


    【解决方案1】:

    来自 apoc.load.jsonParams 文档:

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

    将body作为payload参数传输,用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
    

    【讨论】:

      猜你喜欢
      • 2015-11-18
      • 2021-09-22
      • 1970-01-01
      • 1970-01-01
      • 2013-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-18
      相关资源
      最近更新 更多