Не существует прямого способа изменения БД модулей через стандартный интерфейс REST (я предполагаю, что вы имеете в виду / v1 / eval, а не / eval).
Есть способы сделать это немного сложнее. Сервер приложений на порту 8000 использует XML Rewriter в модулях / MarkLogic / rest-api / 8000-rewriter.xml
Это не «волшебство» - его можно изменить, если у вас есть системные разрешения (и если вы берете на себя ответственность за то, что оно может сломаться).
Существует переписывающий синтаксис для изменения модулей БД, <set-modules-database>
https://docs.marklogic.com/guide/app-dev/XMLrewriter#id_67813
Вы можете изменить rewriter.xml так, чтобы он отличался от пути, отличного от / v1 / eval, установить для DB модулей постоянную или параметр, см. Пример текущей реализации:
Это раздел, который начинается с
<match-path matches="^/(v1|LATEST)/eval">
если вы продублируете это с другим путем поиска (скажем, / v1 / myeval), соблюдая осторожность, чтобы выбрать тот, который не используется, вы можете добавить туда.
Будьте осторожны, он делает то, что ему велено. база данных модулей содержит код самого API REST, поэтому после того, как запрос покидает программу перезаписи, он больше не будет иметь доступа к ЛЮБОМУ коду в стандартной базе данных модулей.
Альтернативы:
- создайте новый сервер приложений на новом порту и делайте на нем все что угодно.
- используйте xdmp: eval-in в вашем / v1 / eval для запуска вашего запроса к другой базе данных модулей.
https://docs.marklogic.com/xdmp:eval-in
- Скопируйте код вашего серверного модуля в базу данных модулей по умолчанию.
- Используйте «необработанную» конечную точку xdbc / eval (не документировано, она использует тот же протокол, что и XCC / XDBC, который можно проверить из общедоступного исходного кода, чтобы сделать вывод о том, как это делается).
- Включите код модуля, предназначенного для вызова, в ваш код в специальном eval