Пользовательское создание REST API MarkLogic без Gradle или Roxy Framework - PullRequest
2 голосов
/ 11 мая 2019

Я хочу создать новый REST API с использованием MarkLogic 9.x.x, но без использования Roxy или Gradle. Я хочу указать на файл, который имеет список настроенных конечных точек в базовой настройке MarkLogic, а затем сохранить мою настраиваемую логику в этих модулях.

Я просмотрел документацию REST API, чтобы создать ее с помощью CURL, чтобы мы могли использовать API по умолчанию, предоставляемые MarkLogic.

Любое подробное объяснение приветствуется.

Ответы [ 4 ]

2 голосов
/ 12 мая 2019

Рассматривали ли вы возможность использования 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>
};
1 голос
/ 11 мая 2019

Управление REST API действительно ваш лучший друг здесь, он предназначен для этой цели.Однако создание сценариев, которые делают соответствующие вызовы REST, может быть громоздким. ml-gradle может поддержать вас в этом.Он может сгенерировать сценарий оболочки со всеми инструкциями curl, которые вы можете запустить как есть, или использовать в качестве отправной точки для создания собственного набора сценариев развертывания.Подробнее см .:

https://github.com/marklogic-community/ml-gradle/wiki/Generating-a-shell-script

HTH!

0 голосов
/ 19 мая 2019

Чтобы вручную развернуть API остатка ML, выполните следующие действия:

  • Создание БД модуля
  • Создание сервера приложений Укажите подробную информацию о БД модуля, базе данных, порте, переписывающем устройстве URL
  • Развертывание xquery, xsl с использованием qConsole

    let URI = путь к файлу

    let path = xdmp: document-get ($ FilePath)

    xdmp:вставка документа ($ URI, $ path, (), ())

    , где endpoints.xqy будет содержать определенную настраиваемую конечную точку для вашего остального API, а внутри вы можете вызывать функцию search: search для вызова данных из MarkLogic

    конечные точки пространства имен модулей = "urn: overstory: rest: modules: endpoints";

    объявить пространство имен rest = "http://marklogic.com/appservices/rest";

    (: ----------------------------------------------------------------------:)

    объявить личную переменную $ endpoints как элемент (остальные: опции): =

         <request uri="^/getcontent$" endpoint="<xqy file" user-params="allow">
            <http method="GET"/>
        </request>
    

Надеюсь, это поможет

0 голосов
/ 11 мая 2019

Оба ответа на сегодняшний день являются правильными, точными и полезными, однако на исходный вопрос ответили сами.

Я просмотрел документацию REST API, чтобы создать ее с помощью CURL, чтобы мы могли использовать API по умолчанию, предоставляемые MarkLogic.

Это на самом деле ответ на ваш вопрос, как указано.

...