3

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

在 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 失败了。

关于如何接近的任何指示都会非常有帮助..

谢谢,拉维

4

1 回答 1

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

希望有帮助,

于 2016-02-14T15:03:25.787 回答