休息扩展 API 在 marklogic 中上传文件

Rest extension API to upload a file in marklogic

我想创建一个自定义端点来上传文件,我可以使用通用 Rest API 存根并使用 POST 方法获取文件内容吗?我在文档中看到了

In MarkLogic 8, POST methods in a single-statement transaction are executed in query mode

这是什么意思?我可以做以下事情吗,

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 ..

失败了

关于如何处理的任何指示都将非常有帮助..

谢谢, 拉维

如果您只想编写单个文档,请考虑使用内置的 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 类型。编写一批文档时,应将批处理打包为 multipart/mixed 有效负载,其中每个部分指定文档格式的 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

希望对您有所帮助,