Mendix 的服务公开 - 发布 REST API、SOAP、OData、HTTP、Swagger、OpenAI | Mendix 评估指南

Skip navigation

Service Exposure

如何发布 REST API?

大多数新服务都不再使用 Web 服务,转而使用 REST,但使用 REST 时需要在服务设计上进行一些小改动。Web 服务需要调用和提供远程逻辑访问,但在 REST 中,则是设计了一个可由外部应用程序使用的数据模型。域模型中的对象称为资源,对相关资源的操作经过标准化处理,形成了以下选项:

  • GET – 读取或查找一个或多个现有资源
  • POST – 新建新资源
  • PUT – 更改现有资源
  • DELETE – 删除现有资源

您也可能在诸如 Swagger 和 OpenAPI 之类的 REST 服务约定中看到这种方法:首先,列出资源,然后列出对这些资源的操作。

Mendix REST 发布功能遵循 OpenAPI 使用的方法,即首先定义资源,然后定义对这些资源的操作。您可以通过定义这些资源、所交换的消息以及用于执行这些操作的微流来完全控制 REST API。

除此以外,您也可以让 Mendix 进行自动处理。您只需通过域模型公开实体,或将实体拖到 publish-REST 文档的资源区域,Mendix 就可以自动生成包括安全在内的所有内容。REST API 会自动使用您在实体上定义的所有安全规则。

无论您想完全控制所执行的 API,或是只想花几分钟时间为移动应用程序生成后端。Mendix 都可以帮您实现。

在查看 REST 操作的执行情况时,您可以使用任何微流执行 REST 操作。Mendix 将自动检测您需要的参数以及任何需要导入或导出映射的对象。这些可以在 Operation 对话框中进行设置。您也可以使用、发送和接收二进制数据或文件文档。例如,想要提供一个检索 PDF 文档的操作等。

以下图片使用了可选 httpResponse 参数,可用于覆盖 HTTP 状态代码或状态消息。如果需要,您还可以指定访问 HTTP 请求,例如,指定 HTTP 标头值的数值。

Mendix 会为您创建的每个 REST 服务自动提供一个 OpenAPI 约定和文档页面。如果在消息定义中提供了示例值,则 REST 服务的用户实际上只需单击“执行”即可查看调用服务的结果。不能更简单了吧!

如何发布 SOAP 服务或 Web 服务?

创建 Web 服务非常简单,只需在 Mendix Studio Pro 中点击“发布为 Web 服务操作”即可。当使用微流执行 Web 服务操作时,输入的参数和微流的返回值将会自动转换为该操作的输入和输出消息。

您可以完全控制该消息,并且可以选择所包含的属性以及要使用的名称,如视频所示:

这样可以确保与外界约定的稳定,同时您仍可以对应用程序进行更改。此外,通过这个信息完全可以自动生成 WSDL 和文档。

如何发布 OData 服务?

目前,Mendix 通过 Mendix Studio 和 Mendix Studio Pro 提供 OData,作为针对特定用例的集成工具,为 Mendix 应用程序数据提供分析。此外,Mendix 还提供了基于 OData 的 SAP 集成,但这也基于 Mendix Connector Kit 技术,说明详见外部数据中的如何导入和导出定长与分隔文件?部分。

OData 可以提供与数据库接口类似的接口,并具有插入、选择、更新和删除功能。OData 通过对 REST 之上的数据语言进行标准化而实现的这一点。这样做的好处是,所有客户端工具都可以提前了解如何使用所公开的数据。

支持 OData 的数据分析工具包括 Microsoft Excel、Tableau、ETL 工具、基本查询工具(例如 LINQPad),甚至是统计分析工具(例如 R)。这意味着只需在 Mendix 中公开一次数据,所有这些工具都可以直接在您的应用程序中使用这些数据。

要通过 OData 公开 Mendix 数据,需要为域模型的实体选择公开为 OData 资源

然后,您可以指定要公开的属性,还可以指定谁可以访问这些数据。当然,在通过 OData 检索数据时,在域模型实体上指定的所有实体访问规则仍然适用。

现在,只要在 Microsoft Excel 或 PowerBI 之类的工具中直接打开公开实体,您就可以持续从 Mendix 应用程序中获取最新信息。

如何在 Mendix 中执行自定义 HTTP 协议?

Mendix 提供了 Java API,用于定义自定义请求处理程序,即通过完全定制的方式来处理 HTTP 端点调用。这对于批量导入或导出数据以及执行自定义身份验证处理程序等场景很有帮助。DeepLink 模块也会使用自定义请求处理程序为需要自定义微流逻辑的页面提供深度链接。另一个用例是 PublicImagePath 模块,用于提供指向应用程序中图像实体的直接 URL,包括对 CDN 中的缓存支持。

Mendix 如何支持 Swagger 和 OpenAPI?

您使用 Mendix 执行的每个 REST API 都会自动包含一个 OpenAPI 文档,用来描述该 API 提供的所有资源和方法。如果您在消息定义中包含了文档和示例值,则这些内容也将包含在您的 OpenAPI 文档中。您的用户可以非常简单地开始使用您的 API。

如何使用证书保护我的集成?

Mendix 可以通过以下方式将证书用于传入和传出通信:

  • 您可以使用证书来确保与服务的安全通信。您可以提供多个 pkcs12 证书文件用于与服务身份验证,包括 REST 服务和 SOAP Web 服务。在配置中,您可以指定用于服务域的证书。
  • 对于从 Internet 到 Mendix Cloud 应用程序的连接,Mendix 提供了由 Mendix 托管的带证书的 .mendixcloud.com 域或 .mxapps.io 域。如果要设置自己的域名,您可以通过“自定义域”进行配置。您还可以要求由指定证书颁发机构签名的客户端证书来限制传入流量。有关此设置的详细步骤,请参见 Mendix 开发人员门户网站指南中的如何限制对传入请求的访问

阅读以下 Mendix 文档了解更多信息: