MarkLogic中是否有用于PATCH的JavaScript资源扩展?

时间:2019-06-10 20:08:05

标签: marklogic http-patch

我需要从自定义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方法不允许”。这样的补丁在MarkLogic中是不允许的吗,这就是为什么示例代码中未包含补丁?

谢谢。

2 个答案:

答案 0 :(得分: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"
  }
};

答案 1 :(得分: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

希望有帮助,