簡體   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