我需要从自定义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中是不允许的吗,这就是为什么示例代码中未包含补丁?
谢谢。
答案 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
希望有帮助,