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

Dix*_*gla 2 ubuntu curl xquery marklogic

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

xdmp:database()HTTP/1.1 500 REST-UNSUPPORTEDPARAM: (rest:UNSUPPORTEDPARAM) Endpoint does not support query parameter: xdmp:database()
Run Code Online (Sandbox Code Playgroud)

下面是完整的curl命令

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

在上面的命令基本上我试图在目标机器上运行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"
Run Code Online (Sandbox Code Playgroud)

当我尝试传递"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"
Run Code Online (Sandbox Code Playgroud)

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

请帮忙.

Jus*_*eig 5

下面是一些使用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 @-
Run Code Online (Sandbox Code Playgroud)

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