Basex Rest API 拒绝查询,而管理页面允许
Basex Rest API rejects query while admin page allows it
当我发送查询时 xml 这样的文档
<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 调用被拒绝?是否还有不适用于管理界面的进一步限制?
如果我删除 let
s 并扩展相应的变量,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.
原来不是查询的问题,而是curl
的--data
选项结合@
发送文件内容。此选项在发送前去除换行符(CR 和 LF)。使用 --data-binary '@...'
查询按预期工作。
当我发送查询时 xml 这样的文档
<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 调用被拒绝?是否还有不适用于管理界面的进一步限制?
如果我删除 let
s 并扩展相应的变量,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.
原来不是查询的问题,而是curl
的--data
选项结合@
发送文件内容。此选项在发送前去除换行符(CR 和 LF)。使用 --data-binary '@...'
查询按预期工作。