【问题标题】:Is there a JavaScript resource extension for PATCH in MarkLogic?MarkLogic 中是否有用于 PATCH 的 JavaScript 资源扩展?
【发布时间】:2019-06-10 20:08:05
【问题描述】:

我需要从自定义 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中是否不允许这种方式的补丁,这就是为什么它没有包含在示例代码中?

提前致谢。

【问题讨论】:

    标签: marklogic http-patch


    【解决方案1】:

    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"
      }
    };
    

    【讨论】:

      【解决方案2】:

      资源服务扩展机制不支持 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

      希望对您有所帮助,

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-22
        • 1970-01-01
        相关资源
        最近更新 更多