You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MarkLogic 10:使用/v1/eval端点执行Xquery脚本遇问题求助

MarkLogic /v1/eval 报“No query to eval”错误的解决办法

问题根源

  • 请求格式不匹配:你指定了application/x-www-form-urlencoded类型,但直接传递模块文件内容,MarkLogic无法识别为有效的查询参数。这种Content-Type要求请求体是xquery=模块代码的键值对形式,而非纯代码文本。
  • 端点选择可优化:你的模块已经存储在data-hub-MODULES数据库中,使用/v1/invoke端点直接调用模块URI,比/v1/eval更贴合你的业务场景。

修正方案

方案1:调整/v1/eval的调用方式

如果坚持使用/v1/eval,有两种修正方式:

方式A:保持urlencoded格式,包装为xquery参数

curl --anyauth --user admin:admin -X POST -i \
  -d "xquery=$(cat ./test/my-script.xqy)" \
  -H "Content-type: application/x-www-form-urlencoded" \
  http://localhost:8011/v1/eval

方式B:改用application/xquery类型直接传递代码

curl --anyauth --user admin:admin -X POST -i \
  -H "Content-type: application/xquery" \
  -H "Accept: application/json" \
  --data-binary @./test/my-script.xqy \
  http://localhost:8011/v1/eval

方案2:用/v1/invoke直接调用已存储模块

这是更适配你场景的方式,模块已存在于data-hub-MODULES数据库,直接指定URI即可:

curl --anyauth --user admin:admin -X POST -i \
  -H "Content-type: application/json" \
  -H "Accept: application/json" \
  http://localhost:8011/v1/invoke?uri=/test/my-script.xqy

额外注意

  • 确认8011端口的应用服务器,其关联的模块数据库确实为data-hub-MODULES,否则会找不到指定URI的模块。
  • 如果需要显式指定执行数据库(即使应用服务器已关联data-hub-FINAL),可在URL后追加&database=data-hub-FINAL。

内容的提问来源于stack exchange,提问作者Tanner B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 09:43:18