我在特定内容数据库/eval?database=xxx
要评估的查询从模块数据库导入一个库。但是我找不到在端点本身上进行设置的任何方法。
我想念如何在POST /eval
上设置模块数据库吗?
答案 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本身的代码,因此,一旦请求离开重写器,它将不再有权访问默认模块数据库中的任何代码。
替代品: