2016-02-14 47 views
3

我想创建一个自定义终端来上传文件,我可以使用通用的Rest API存根并使用POST方法获取文件内容..我在文档中看到Rest扩展API上传marklogic中的文件

在MarkLogic 8,在单语句事务POST方法查询方式

执行什么意思?我可以只做以下几点,

declare function repo:post($context as map:map, $params as map:map,$input as document-node()*) as document-node()* 
{ 
    let $filename := xdmp:get-request-field-filename("upload") 
    let $contentType := xdmp:get-request-field-content-type("upload") 
...... 
}; 

这会采取“multipart/form-data;” ??有什么我能看的例子吗?上述方式似乎并没有为我工作

我也试过(爱注释)使用RXQ(https://github.com/xquery/rxq),但失败了的multipart/form-data的..

对如何处理任何指针将是真正有用的..

感谢, 拉维

+0

可以共享至关重要你的表单的位? – grtjn

+0

当我使用ML8开箱即用的URL重写器/MarkLogic/rest-api/rewriter.xml)它一切正常..我使用“rxq”的自定义URL重写器,因为它支持注释,所以我不需要为每个端点创建一个独立的xqy ..但是看起来像rxq在ML8中失败.. – Ravi

+1

是的,ML8的新声明性重写器使得它更难以扩展内置的.. – grtjn

回答

3

如果你只想写一个文档,可以考虑使用内置的REST端点:

http://docs.marklogic.com/REST/PUT/v1/documents

如果你想在文件被写入,同时执行一些自定义逻辑,一个简单的方法是指定一个变换,它执行的副作用动作,只是通过原稿不变:

http://docs.marklogic.com/guide/rest-dev/transforms

如果您的定制逻辑必须处理的写​​入,考虑使用PUT方法:

http://docs.marklogic.com/REST/PUT/v1/resources/%5Bname%5D

当编写一个单一的文件,你指定的MIME标识文档格式的类型。在编写一批文档时,应将批处理打包为多部分/混合有效内容,其中每个部分指定文档格式的MIME类型。

使用REST扩展时,您不需要与HTTP进行交互。 REST API为你做到这一点,获取文档并将其传递给你的函数。你只写有预期的签名功能:

http://docs.marklogic.com/guide/rest-dev/extensions#id_75991

而且随着功能安装库模块:

http://docs.marklogic.com/guide/rest-dev/extensions#id_59112

希望帮助,