在 Marklogic 中将 XCC 调用替换为 Rest 调用



在应用程序中,.Net XCC用于与marklogic模块数据库进行通信以执行模块,函数和临时查询等。 我想用 REST 调用替换相同的 XCC 调用,以便我们可以在 marklogic 9 中运行应用程序,因为 .Net XCC 已在 Marklogic 9 中弃用。

我已经尝试在标记逻辑中内置的 rest api。它只允许在模块数据库中执行模块退出。

是否有任何可用的在线资源或任何可以帮助我们的东西。

任何帮助将不胜感激。

谢谢 阿文德氪

/v1/invoke调用附加到要寻址的 REST 应用服务器的模块数据库中的模块,但也/v1/eval允许运行即席查询。

哼!

如果你打算用RESTful调用替换 XCC.NET,试试XQRS,它允许你以类似于JAX-RS for Java的方式在XQuery中构建服务。

对于像您这样有用或需要与遗留代码兼容以及提供其他选项的情况,我只考虑以下内容。这不是一种优雅的方法,但在特殊情况下可能很有用。

XDBC 协议(XCC 使用的协议(在与 REST API 公开的完全相同的应用程序服务器和端口上原生支持。 您可以在默认安装的端口 8000 上看到这一点。服务器实际上无法区分"REST应用程序"和"XCC应用程序",除非通过请求中请求的URI(在某些情况下,还有其他标头,如cookie(。 REST和XDBC都是基于HTTP的,并且在HTTP层非常相似,因为它们可以共享相同的端口和配置。 XDBC 通过 XML 重写器"传递"REST 处理。 XDBC 使用/eval 和/invoke,而 REST 使用/v1/eval 和/vi/invoke。 如果您查看默认重写器.xml对于端口 8000,您可以看到路由是如何进行的。 虽然XDBC协议尚未正式发布,但通过查看XCC代码(公共Java源代码(和重写器进行"逆向工程"并不困难。 例如,构造 URL 和有效负载数据来执行基本的评估或调用并不困难。 您应该能够使用/eval 和/invoke 端点(查找在重写器中设置的 xdbc 属性.xml完全复制现有的 XCC.NET 客户端行为,这会导致请求处理使用纯 XDBC 协议和行为。

另一种选择,如果你不能解决外部变量问题,是编写新的"REST 友好"API,然后在传入适当命名空间的遗留 API 上 xdmp:invoke((。 一种选择是将旧代码放在完全独立的模块数据库中,然后使用新代码完全复制模块 URI。 如果不需要维护共存版本,请修改旧代码以从参数中删除命名空间或分配局部变量别名。

最新更新