我正在尝试在ML7中学习REST API(我们无法升级到ML8以获得所有新功能),所以我可以添加我需要的内容。
我正在尝试安装简单的rest-api扩展,该扩展可能会将森林ID解析为其名称,但它无法按预期工作。 我在curl PUT中进行了身份验证,但返回的html代码给了我:
Welcome, <username>
Page Not Found
我正在执行的命令是:
curl --anyauth --user user:pass -X PUT -H "Content-type: application/xquery" -d@"./resolvefidtoname.xqy" http://localhost:8002/resolvefidtoname
和xquery文件中的代码是:
$ cat resolvefidtoname.xqy
xquery version "1.0-ml";
module namespace ernest = "http://marklogic.com/rest-api/resource /resolvefidtoname";
import module namespace admin = "http://marklogic.com/xdmp/admin"
at "/MarkLogic/admin.xqy";
declare function ernest:resolvefidtoname($node as element()) as element()?
{
if (fn:data($node) ne 0) then
element {fn:node-name($node)}
{
xdmp:forest-name(fn:data($node))
}
else ()
};
我有点难过。我开始认为我们的应用程序被引导到不同于80002的端口上工作但没有配置为利用rest-api,但我不知道如何测试它。
我认为可能通过使用curl命令我可以测试给定端口上的应用程序是否支持rest-api,所以我尝试了:
curl -X GET --anyauth --user user:pass -H "Accept: application/json" http://localhost:8002/LATEST/rest-apis/
但结果是答案: { “REST的API”:[]} 这不是很有帮助,在任何其他监听端口上测试时都没有响应。
非常感谢任何帮助。 我在AmazonLinux上运行ML6,安装来自ML ec2 cfn模板(没什么特别的。)
谢谢
答案 0 :(得分:2)
感谢您的尝试。有一些问题。
在REST服务器的端口上安装并执行REST扩展,而不是在端口8002(管理REST API的端口)上安装和执行。
在REST服务器上安装扩展的URI与上面的curl命令不同:
http://docs.marklogic.com/6.0/REST/PUT/v1/config/resources/%5Bname%5D
模块命名空间有一个嵌入空间:
"http://marklogic.com/rest-api/resource /resolvefidtoname"
^
有关更多背景信息,请参阅:
http://docs.marklogic.com/6.0/guide/rest-dev/extensions#id_59112
还有免费的培训资源Dave Cassel在答案中列出:
How to deploy files into MarkLogic server
顺便说一句,MarkLogic 6是两个旧版本。如果可能,您可以使用MarkLogic 8获得许多新功能和修复。
希望有帮助,