繁体   English   中英

如何使用Ubuntu中的cURL将XQuery代码发布到MarkLogic?

[英]How to post XQuery code to MarkLogic using cURL from Ubuntu?

我正在使用Ubuntu机器。 我正在使用curl命令进行POST调用,并以字符串格式将xquery代码作为--data发送。 作为回应我得到以下错误:

xdmp:database()HTTP/1.1 500 REST-UNSUPPORTEDPARAM: (rest:UNSUPPORTEDPARAM) Endpoint does not support query parameter: xdmp:database()

下面是完整的curl命令

curl -v --digest -u username --request POST "http://host:port/qconsole/endpoints/evaler.xqy?dbid=someid&querytype=xquery&action=eval" --data "xdmp:database()"

在上面的命令基本上我试图在目标机器上运行xquery代码(主机:端口/端点/ evaler.xqy)

这是传递xquery代码的正确方法吗?

更新:

我正在使用ML 7

传递头文件后,我能够运行XQuery代码,但又面临一个问题。

当我传递“xdmp:database()”作为数据它工作正常(参见下面的命令),在响应中我得到数据库ID。

 curl -v --digest -uusername --data "xdmp:database()" --header "Content-type:text/x-www-form-urlencoded" --header "Accept: multipart/mixed; boundary=BOUNDARY" --request POST "http://host:port/qconsole/endpoints/evaler.xqy?dbid=dbid&querytype=xquery&action=eval"

当我尝试传递“let $ x:= 10 return $ x”作为数据时(如下面的命令所示)我得到了

x:未定义的变量

甚至不要求密码!!

 curl -v --digest -u username --data "let $x := 10 return $x" --header "Content-type:text/x-www-form-urlencoded" --header "Accept: multipart/mixed; boundary=BOUNDARY" --request POST "http://host:port/qconsole/endpoints/evaler.xqy?dbid=dbid&querytype=xquery&action=eval"

无法弄清楚,我做错了什么。

请帮忙。

下面是一些使用cURL从stdin中评估JavaScript的示例bash (更改为XQuery只是更改参数名称的问题。)

#!/usr/bin/env bash

# Pipes stdin as the JavaScript body of a REST Client API eval request
#
# Usage:
#   cat cat mycode.js | awk … | curl … @-
#   pbpaste | awk … | curl … @-

awk '{print "javascript="$0}' | curl http://localhost:8000/v1/eval --digest -u "$USER":"$PASS" -X POST -H 'Content-Type: application/x-www-form-urlencoded' -H 'Accept: multipart/mixed' -d @-

您需要适当地设置$USER$PASS变量。

我认为您最好使用REST端点进行评估:

http://docs.marklogic.com/REST/POST/v1/eval

HTH!

如果使用MarkLogic 8+,则应使用/ v1 / eval,如@grtjn所述。 由于您使用了marklogic-7标记,因此它看起来像是在ML7上。

无论版本如何,最重要的选择是为这个代码应该做的任何事情创建一个REST API扩展 ,假设你没有尝试支持任意XQuery执行。 如果是,您可以创建一个模仿/ v1 / eval所做的扩展。 更好的是,如果可以的话,升级到ML8并使用/ v1 / eval本身。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM