在 mule 中手动解析 RAML 文件的简单方法是啥?
Posted
技术标签:
【中文标题】在 mule 中手动解析 RAML 文件的简单方法是啥?【英文标题】:what is the easy way to manually parse the RAML file in mule?在 mule 中手动解析 RAML 文件的简单方法是什么? 【发布时间】:2019-05-17 13:00:04 【问题描述】:在 mule 应用程序中,我正在尝试解析 RAML 文件。我知道 APIKit 在解析 RAML 文件后创建流的方式相同。但是,如果我想在流程中间手动解析它怎么办?
我已经看到了可用的 raml 解析器,但没有找到这些 javascript 库或 java 库的正确用法,以了解如何在 mule 应用程序中使用它们..
【问题讨论】:
【参考方案1】:是的,您可以使用 java 类或实现 java 的 groovy 组件在您的 java 应用程序中解析 RAML。 有可用的 java 解析器,例如 RamlModelBuilder,您可以使用它来解析您的应用程序 RAML,例如验证您的 RAML 文件、获取 API 名称、获取所有资源名称、方法名称、范围、安全模式及其名称,查询参数、标头等等... 只需检查示例如何在此处使用。您可以简单地创建一个 java 类并解析您的 RAML
https://github.com/anirban37/Anirban-Custom-Oauth-Policy/blob/master/Anirban-RAML-Oauth-V3/OauthPolicies.xml#L594。
ramlModelResult = new RamlModelBuilder().buildApi(ac.getRaml())
将在 java 类中为您提供应用程序的当前 RAML 文件访问权限
【讨论】:
【参考方案2】:Mule 中没有任何东西可以在运行时处理 RAML 文件。
但是您可以创建任何使用 RAML Java 库的 Java 组件,并在您的流程中从 Mule 调用它。
Mule4 SDK 是通过 Java 扩展 mule 的一种方式。
关于 Mule SDK 的更多信息可以在这里找到https://mule4-docs.mulesoft.com/mule-sdk/v/1.1/
您也可以调用 Java 类,但它们需要与 Mule API 分离,并且您需要提取任何变量、属性或有效负载并将值显式传递给您的类。例如,将静态字符串和流变量作为参数传递给 Java 构造函数:
<java:new class="com.foo.AppleEater" constructor="MyClass(String, Apple)">
<java:args>#[name: 'some string arg', apple: vars.apple]</java:args>
</java:new>
在您的类中,您可以使用 RAML Java 库,并将文件或路径传递给 RAML 文件以从类路径加载。
更多关于 Java 与 Mule 4 的集成:https://docs.mulesoft.com/mule-runtime/4.1/intro-java-integration
【讨论】:
以上是关于在 mule 中手动解析 RAML 文件的简单方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
RAML 模拟服务 POST 请求在 Mule 设计中心显示 404 错误
如何在 Anypoint Studio 项目中更改 RAML 版本