当管理页面允许时,Basex Rest API拒绝查询

问题描述 投票:0回答:1

当我发送这样的查询xml doc时

<query><text><![CDATA[
let $facts := fn:collection("factbook/factbook.xml")/mondial
let $c := ("Antarktika", "Atlantis")
for $name at $id in $c
return
insert node (<continent id="f0_aaa{$id}" name="{$name}" />) into $facts
]]></text></query>

使用REST API

curl -i --data '...' 'http://localhost:8984/rest'

BaseX将报告以下错误:

[XPST0003] Incomplete FLWOR expression: expecting 'return'.

如果我在Web管理查询页面上执行相同的查询,则接受查询并插入节点。

为什么拒绝REST呼叫?是否有任何进一步的限制不适用于管理界面?

如果我删除lets并展开相应的变量,则REST API接受该查询:

<query><text><![CDATA[
for $name at $id in ("Antarktika", "Atlantis")
return
insert node (<continent id="f0_aaa{$id}" name="{$name}" />) into fn:collection("factbook/factbook.xml")/mondial
]]></text></query>

REST用户具有写入权限。我正在使用BaseX 9.0.2。

basex
1个回答
0
投票

原来,问题不是查询,而是--datacurl选项与@结合发送文件内容。此选项在发送之前剥离换行符(CR和LF)。使用--data-binary '@...',查询按预期工作。

© www.soinside.com 2019 - 2024. All rights reserved.