本文介绍了如何使用java spring 将mendix应用程序中已发布的rest服务转换为mvc应用程序的rest层。 在运行过程中,我们将使用反射来检测控制器和api端点,并使用mendix平台sdk进行导入。
首先,我们扫描带有@Restcontroller注释的Java类别。对于每个控制器,我们提取其路径(用于Mendix资源名称),并通过其公共方法传播。 我们用一个映射来匹配Spring MVC注解(@GetMapping、@PostMapping、@PutMapping、@DeleteMapping)与对应的Mendix REST操作类型(GET、POST、PUT、DELETE)。
代码片段显示了如何收集控制器信息:
public static void exportRestLayerTo(String filepath) throws IOException { // ... (代码略) ... for (Class<?> restControllerClass : restControllerClasses) { // ... (代码略) ... for (Method method : restControllerClass.getDeclaredMethods()) { // ... (代码略) ... } // ... (代码略) ... } // ... (代码略) ... }
Java记录类用于导出和导入:MendixPublishedRestService、MendixPublishedRestServiceResource、MendixPublishedRestServiceOperation。 这些类别分别表示Mendix已经发布了REST服务、资源和操作。
record MendixPublishedRestService( String serviceName, String path, String version, List<MendixPublishedRestServiceResource> resources) {} // ... (其他记录类代码略) ...
导出JSON文件后,我们使用Mendix平台SDKTypeScripttt 导入API。 与Java记录类相对应的TypeScript接口:ImportedRestService、ImportedRestResource、ImportedRestOperation。
interface ImportedRestService { serviceName: string; path: string; version: string; resources: ImportedRestResource[]; } // ... (其它接口代码略) ...
然后,我们使用SDK创建Mendix应用程序的工作副本,并在JSON数据中创建已发布的REST服务、资源和操作。 最后,我们使用commitorepository方法将变更提交给mendix应用程序。
const client = new mendixplatformclient(); // ... (代码略) ... importedServices.forEach(importedService => { // ... (代码略) ... }); // ... (代码略) ...
最后,我们为每一个Mendix做准备 REST操作分配示例微流。 在整个过程完成后,您可以在Mendix中 Studio 验证Pro中创建的REST服务。
未来的改进方向包括改进Mendix平台SDK的文档,探索使用静态代码分析来提高效率。 在GitHub仓库中可以找到完整的代码。
以上是将弹簧MVC应用程序转换为Mendix的详细内容。请关注图灵教育的其他相关文章!
