评估端点:设置模块数据库

时间:2018-09-06 09:47:50

标签: marklogic

我在特定内容数据库/eval?database=xxx

上使用8000的eval端点

要评估的查询从模块数据库导入一个库。但是我找不到在端点本身上进行设置的任何方法。

我想念如何在POST /eval上设置模块数据库吗?

1 个答案:

答案 0 :(得分:2)

没有通过标准REST接口更改模块DB的直接方法(我想您是说/ v1 / eval不是/ eval)。 有多种方法更具挑战性。端口8000上的应用程序服务器使用Modules / MarkLogic / rest-api / 8000-rewriter.xml中的XML Rewriter 这不是“魔术”-如果您具有系统权限(并且对可能损坏的内容负责),则可以对其进行修改。 有重写器语法可以更改模块DB <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)复制此副本,请小心选择一个未使用的匹配路径,您可以在其中添加。

请注意,它会执行所告知的操作。模块数据库包含REST API本身的代码,因此,一旦请求离开重写器,它将不再有权访问默认模块数据库中的任何代码。

替代品:

  • 在新端口上创建新的应用服务器,然后根据需要进行操作。
  • 在/ v1 / eval中使用xdmp:eval-in对不同的模块数据库运行查询。 https://docs.marklogic.com/xdmp:eval-in
  • 将服务器模块代码复制到默认的模块数据库中。
  • 使用“原始” xdbc / eval端点(未记录,它使用与XCC / XDBC相同的协议,您可以检查公共源代码以推断其完成方式)。
  • 在临时评估中将您要调用的模块的代码包含在您的代码中