【发布时间】:2017-02-02 16:35:16
【问题描述】:
是否可以在 POST 请求的正文中包含 cursorMark 值而不是将其作为查询字符串参数发送?
以下查询:
{"query":"val:abc","limit":10,"cursorMark":"*","sort":"id asc"}
返回错误消息:“JSON 请求中的未知顶级键:cursorMark”
【问题讨论】:
-
你如何发送这个请求?
是否可以在 POST 请求的正文中包含 cursorMark 值而不是将其作为查询字符串参数发送?
以下查询:
{"query":"val:abc","limit":10,"cursorMark":"*","sort":"id asc"}
返回错误消息:“JSON 请求中的未知顶级键:cursorMark”
【问题讨论】:
根据Solr Json Request API documentation,每个查询字符串参数在JSON API中都有一个对应的POST请求参数,例如q -> 查询,开始 -> 偏移量 等
但是,cursorMark 查询字符串参数没有等效参数。
我知道的最佳解决方案是将请求类型从 application/json 更改为 application/x-www-form-urlencoded,这允许在 POST 中使用查询字符串参数请求的正文。我使用 application/json 的原因是为了得到 json 响应,但结果它是由 wt=json 参数控制的。
【讨论】:
https://solr.apache.org/guide/7_7/json-request-api.html#passing-parameters-via-json 表示您可以使用非 JSON 参数扩充基于 JSON 的 POST。我在 2022 年使用包含 "params": {"cursorMark": "*"} 的 JSON 查询来实现这一点,而无需诉诸于更改请求类型(如已接受的答案中所建议的那样)。
【讨论】: