我有一个RestXQ方法:
declare
%rest:path("/doSomething")
%rest:POST
%rest:form-param("name","{$name}")
function page:doSomething($name as document-node())
{
(: Code... :)
};
我试图通过XForms向该方法发送POST请求。作为对客户端的响应,我得到了[XPTY0004] Cannot convert empty-sequence() to document-node(): ().
,我试图删除document-node()
,但是参数$ name只是空的。
request参数如下:
<data xmlns=""><name>Test</name></data>
有解决方案吗?
答案 0 :(得分:1)
问题在于%rest:form-param("name","{$name}")
用于键值对,但是您的方法表明您想要$name as document-node()
。这两件事加在一起是没有道理的。
您可能希望使用POST请求的正文而不是form-param
,因为您将使用以下命令:
declare
%rest:path("/doSomething")
%rest:POST("{$body}")
function page:doSomething($body as document-node())
{
(: Code... :)
};
请参见http://www.adamretter.org.uk/papers/restful-xquery_january-2012.xhtml#media-example