什么是应用程序接口?
API(应用程序编程接口)是一种接口,不同的软件应用程序可以通过该接口进行相互通信。 API 定义了程序之间信息交换的规则。
借助 API II ,可以使用自主编程的软件访问 RFEM 6/RSTAB 9 的功能。 例如可以生成模型、创建荷载、开始计算以及读取结果。
RFEM 6/RSTAB 9 已经拥有一个应用程序编程接口,即网络服务接口 (API I)。 这也将被保留。 因此,不是绝对有必要将现有的软件转换为 API II。
如果在 RFEM 6/RSTAB 9 中添加新的功能,那么它们只在 API II 中可用。 API I 在当前水平上保持“冻结”状态。
与“旧”API 相比在技术上有哪些区别?
首先,这两个接口都是基于网络服务技术。 RFEM 6/RSTAB 9 与客户端软件通过 HTTP(或 HTTPS)协议进行通信。
使用 API I,客户端和服务器以 SOAP 格式交换消息。 API II 使用 gRPC 协议代替。
SOAP 以 XML 格式交换消息。 使用 SOAP 进行通信的开销相对较高。
相比之下,gRPC 以轻量级的、基于缓冲区的二进制格式交换消息。 这比基于文本的格式(例如 XML 或 json)有效得多。
gRPC使用更新的HTTP/2协议,这也使得传输更加高效。
新的 API II 允许将多个对象组合到一个列表中,然后进行传递。 这意味着只需要几次 API 调用,而不是大量的小型调用。 这也提高了效率。 下面的示例显示了这种批处理技术的工作原理。
所有这些提高效率的措施意味着通过新的 API II 进行通信的速度比通过 API I 快大约 10 倍。
API II 允许相同的代码无需任何修改就可以在三个不同的平台上运行。
- 作为一个独立的 Python 程序,可以从“外部”访问本地或网络安装的 RFEM 6。
- 在 RFEM 6 的内部脚本控制台中。
- 在 Dlubal 云端。
独立程序
正常 RFEM 6 已经安装在您的电脑上。 Python 程序通过 API II 与 RFEM 进行通信。
脚本控制台
您输入的脚本将直接在 RFEM 的脚本控制台中执行。
Dlubal云
对于这种情况,用户不必在本地安装 RFEM。 您编写与德儒巴云中的服务器通信的应用程序。 然后您的应用程序在服务器上生成结构和荷载数据。 计算在服务器上执行。 您的应用程序会读取计算结果并进行评估。
计费过程中有哪些变化?
使用旧的 API I 是按月付费的。 这与实际使用无关。
新的 API II 将这种模式改为基于使用的计费模型。 这意味着调用某些 API 功能是需要付费的。 这将以 Dlubal 积分计费。 在网上商店有售。
生成 API key
要使用 API II,除了订阅网络服务外,还需要一个 API 密钥。 API 密钥是用于识别和验证用户的一段文本。
用户可以在外部网中生成 API 密钥。
生成的每个 API 注册表项都属于一个“公司”。 这意味着任何分配给公司的用户都可以使用这些键。
生成多个 API 密钥是可以而且通常是有用的。 我们将不会收取额外费用。 例如,为每个项目生成一个单独的注册表项是非常有意义的。 这样用户可以在其内部核算中区分各个项目。
接口安装
接口软件包可以在 PiPI 找到。 运行以下命令来安装软件包:
- code.python#
pip install dlubal.api
- /代码#
程序示例
通过一个小例子来演示如何使用新的 API II。 这样就创建了截面为钢结构截面IPE 200的悬臂梁。
程序代码:
- code.python#
将 dlubal.api.rfem 作为 rfem 导入
rfem.Application() 作为 rfem_app:
- rfem_app.create_model(name='cantilever')
- rfem_app.delete_all_objects()
- inf = float('inf')
- 结构式 = [
- rfem.structure_core.材料(
- 没有=1,
- name='S235'
- ),
- rfem.structure_core.Section(
- 没有=1,
- name='IPE 200',
- 材料=1
- ),
- rfem.structure_core.节点(
- 否=1
- ),
- rfem.structure_core.节点(
- 没有=2,
- 坐标_1=6.0
- ),
- rfem.structure_core.Line(
- 没有=1,
- definition_nodes=[1,2]
- ),
- rfem.structure_core.杆件(
- 没有=1,
- 线=1,
- section_start=1
- ),
- rfem.types_for_nodes.NodalSupport(
- 没有=1,
- 节点 = [1],
- spring_x=inf,
- spring_y=inf,
- spring_z=inf,
- rotational_restraint_x=inf,
- rotational_restraint_y=inf,
- rotational_restraint_z=inf
- ),
- ]
- rfem_app.create_object_list(结构)
- /代码#
首先,导入 RFEM 库。
使用命令 with 可以创建该类的 rfem_app 实例。 API key 可以作为参数在 rfem.Application() 中使用。 但是,出于安全原因,我们不建议您这样做。 API key 保存在 .ini 文件中。 在 API II 的详细文档中解释了它的具体工作原理:
在下一行中,使用方法 rfem_app.create_model(name='cantilever') 创建一个新的 RFEM 模型。 模型名称作为参数被传递。
接下来的几行代码是新的 API II 与旧的 API I 的区别。 然后,将它们与命令 rfem_app.create_object_list(structure) 一起导入。