我正在尝试使用此link
中的示例在Marklogic中实现转换当我尝试使用以下curl命令安装转换时
curl --anyauth --user admin:admin -X PUT -d@"./add-attr.xqy" -H "Content-type: application/xquery" 'http://localhost:8000/LATEST/config/transforms/add-attr?trans:name=string\?&trans:value=string\?'
它给了我错误(使用curl)
<div><h3>Message</h3><div style="width: 100%; height: 300px; overflow: auto;"><pre><error:error xsi:schemaLocation="http://marklogic.com/xdmp/error error.xsd" xmlns:error="http://marklogic.com/xdmp/error" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<error:code>XDMP-BADREP</error:code>
<error:name>err:FORX0004</error:name>
<error:xquery-version>1.0-ml</error:xquery-version>
<error:message>Invalid replacement string</error:message>
<error:format-string>XDMP-BADREP: (err:FORX0004) fn:replace("/LATEST/config/transforms/add-attr", attribute{fn:QName("", "uri")}{"^/(common-api|dashboard|history|manage|nav|packaging|rest-apis)(..."}, &lt;rest:uri-param name="url" xmlns:rest="http://marklogic.com/appservices/rest"&gt;/LATEST/config/transforms/add-attr?trans:name=string\?&amp;amp;trans...&lt;/rest:uri-param&gt;) -- Invalid replacement string: /LATEST/config/transforms/add-attr?trans:name=string\?&amp;trans:value=string\?</error:format-string>
<error:retryable>false</error:retryable>
<error:expr>fn:replace("/LATEST/config/transforms/add-attr", attribute{fn:QName("", "uri")}{"^/(common-api|dashboard|history|manage|nav|packaging|rest-apis)(..."}, &lt;rest:uri-param name="url" xmlns:rest="http://marklogic.com/appservices/rest"&gt;/LATEST/config/transforms/add-attr?trans:name=string\?&amp;amp;trans...&lt;/rest:uri-param&gt;)</error:expr>
<error:data>
<error:datum>/LATEST/config/transforms/add-attr?trans:name=string\?&amp;trans:value=string\?</error:datum>
我甚至尝试使用 Postman-chrome app ,它给了我 401 Unauthorized 错误。
即使我正在使用
检查可用的变换http://localhost:8000/v1/config/transforms
它给了我找不到页面例外
我正在尝试使用具有所有管理员权限的 admin 用户
我在这里缺少什么?如何为REST调用构建转换?
答案 0 :(得分:1)
我遇到了同样的错误,但前提是我对MarkLogic 7运行上述命令.MarkLogic 7没有在端口8000上运行REST-api,这是MarkLogic 8中的新功能。
除此之外,你应该使用url编码而不是regex转义为trans:xxx请求参数值中的问号,例如:
curl --anyauth --user admin:admin -X PUT -d@"./add-attr.xqy" -H "Content-type: application/xquery" 'http://localhost:8000/LATEST/config/transforms/add-attr?trans:name=string%3F&trans:value=string%3F'
HTH!