Рассматривали ли вы возможность использования XQRS ?, вы можете легко создавать пользовательские конечные точки REST с помощью интуитивно-понятных аннотаций функций, аналогично тому, как это делается в JAX-RS или Java Spring REST Services. Может устанавливаться и использоваться с или без Gradle.
Вы можете сохранить свою пользовательскую логику либо в этих функциях REST, либо написать свою пользовательскую логику в коде JavaScript, который вы затем импортируете / вызываете из этих функций. XQRS предоставляет вам полную гибкость. Вы можете создавать прекрасные API-интерфейсы REST с удобными для пользователя URL-адресами, которые располагаются непосредственно в MarkLogic, , получая полный контроль над URL-путем . Это твердая как скала и юнит, испытанный на смерть . Он масштабируется с помощью MarkLogic - то есть вы добавляете больше электронных узлов MarkLogic и автоматически масштабируете свои REST-серверы, это абсолютно бесплатно и с открытым исходным кодом. Проект активно поддерживается, и поддержка доступна на GitHub. Если у вас есть Swagger / OpenAPI интерфейсный файл, вы можете создать MarkLogic Stub , который может сэкономить вам много времени.
Функции просто становятся доступными как Службы REST на основе размещенных на них аннотаций - и вы можете передавать параметры запроса / формы, файлы cookie и тело запроса через аннотации. Проверьте этот фрагмент для образца вкуса.
declare
%rest:path("/factory/warehouse/wheel/{$wheel-id}")
%rest:GET
function get-wheel($wheel-id as xs:string) {
fn:doc($wheel-id)
};
declare
%rest:path("/factory/warehouse/wheel/{$wheel-id}")
%rest:PUT("{$doc}")
%xdmp:update
function put-wheel($wheel-id as xs:string, $doc as document-node(element())) {
xdmp:document-insert($wheel-id, $doc, map:entry("collections", "wheels"))
};
declare
%rest:path("/factory/warehouse/wheel")
function list-wheels() {
<wheels>{
fn:collection("wheels")
}</wheels>
};