Существует ли расширение ресурса JavaScript для PATCH в MarkLogic? - PullRequest
2 голосов
/ 10 июня 2019

У меня есть требование для вызова метода исправления из пользовательской конечной точки 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 ]

2 голосов
/ 11 июня 2019

Механизм расширения REST собственного MarkLogic может не поддерживать методы 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"
  }
};
0 голосов
/ 10 июня 2019

Механизм расширения службы ресурсов не поддерживает метод 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

Надеясь, что помогает,

...