2

我需要从自定义 REST 端点调用补丁方法。

我在 MarkLogic 文档中搜索并找到了这个示例代码 -

function get(context, params) {
  // return zero or more document nodes
};

function post(context, params, input) {
  // return zero or more document nodes
};

function put(context, params, input) {
  // return at most one document node
};

function deleteFunction(context, params) {
  // return at most one document node
};

exports.GET = get;
exports.POST = post;
exports.PUT = put;
exports.DELETE = deleteFunction; 

我目前使用所有这些 JS 扩展,它们工作得很好。我试图以同样的方式制作补丁功能 -

function patch(context, params, input) {
 return;
}

exports.PATCH = patch;

当我通过我的端点调用补丁方法时,我得到一个“405 Method Not Allowed”。MarkLogic 中是否不允许以这种方式进行补丁,这就是为什么它不包含在示例代码中?

提前致谢。

4

2 回答 2

2

MarkLogic 自己的 REST 扩展机制的东西可能不支持 PATCH 方法,但XQRS肯定支持。

像这样

declare
  %rest:PATCH
  %rest:path("/my/uri/how/i/want/it")
  %output:method("json")
function my-patch-request() {
  object-node {
    "my-key" : "my-value"
  }
};
于 2019-06-10T22:06:18.217 回答
0

资源服务扩展机制不支持 PATCH 方法。

用于补丁服务的最佳动词可能是 POST。

如果 PATCH 服务正在修改文档,则实现可以使用xdmp.node(Insert*|Replace|Delete)诸如

http://docs.marklogic.com/xdmp.nodeInsertBefore

一种替代方法是建立一个单独的应用服务器,并在声明式重写器中为 PATCH 提供规则,或者xdmp.getRequestMethod()在命令式重写器中使用该方法。看:

http://docs.marklogic.com/guide/app-dev/XMLrewriter

希望有帮助,

于 2019-06-10T20:44:13.243 回答