¿Qué es una API?
Una API (interfaz de programación de aplicaciones) es una interfaz a través de la cual diferentes aplicaciones de software se pueden comunicar entre sí. Una API define reglas para el intercambio de información entre programas.
Con API II, es posible acceder a las funciones de RFEM 6/RSTAB 9 con un software autoprogramado. Por ejemplo, es posible generar modelos, crear cargas, iniciar el cálculo y, finalmente, leer los resultados.
RFEM 6/RSTAB 9 ya tiene una API, la interfaz de servicios web (API I). Esto también se mantendrá. Por lo tanto, no es absolutamente necesario convertir el software existente a API II.
Si se agregan nuevas funcionalidades en RFEM 6/RSTAB 9, solo estarán disponibles en API II. El API I permanece "congelado" en el nivel actual.
¿Cuáles son las diferencias técnicas con la API "antigua"?
En primer lugar, ambas interfaces se basan en la tecnología de servicios web. RFEM 6/RSTAB 9 se comunica con el software del cliente a través del protocolo HTTP (o HTTPS).
Con API I, el cliente y el servidor intercambian mensajes en formato SOAP. API II usa el protocolo gRPC en su lugar.
SOAP intercambia mensajes en formato XML. La comunicación que usa SOAP tiene una sobrecarga relativamente alta.
Por el contrario, gRPC intercambia mensajes en un formato binario ligero basado en búfer. Esto es mucho más eficiente que los formatos basados en texto como XML o JSON.
gRPC usa el nuevo protocolo HTTP/2, que también hace que la transmisión sea más eficiente.
El nuevo API II permite combinar múltiples objetos en una lista y luego transferirlos. Esto significa que solo se requieren unas pocas llamadas a la API, en lugar de una gran cantidad de llamadas pequeñas. Esto también aumenta la eficiencia. El siguiente ejemplo muestra cómo funciona esta técnica por lotes.
Todas estas medidas de eficiencia significan que la comunicación a través del nuevo API II es aproximadamente 10 veces más rápida que a través del API I.
API II permite que el mismo código se ejecute en tres plataformas diferentes sin ninguna modificación.
- Como un programa independiente de Python que accede a un RFEM 6 localmente o instalado en la red desde el "exterior".
- En la consola de secuencias de comandos interna de RFEM 6.
- En la nube de Dlubal.
Programa independiente
Normalmente RFEM 6 está instalado en su equipo. Su programa Python se comunica con RFEM a través de API II.
Consola de secuencias de comandos
Su secuencia de comandos se ejecutará directamente en la consola de secuencias de comandos de RFEM.
Nube de Dlubal
Para esta aplicación, no es necesario instalar RFEM localmente. Usted escribe su programa de aplicación que se comunica con un servidor en la nube de Dlubal. Su programa de aplicación genera datos estructurales y de carga en el servidor. El cálculo se realiza en el servidor. Su programa de aplicación lee los resultados del cálculo y los evalúa.
¿Qué ha cambiado en el proceso de facturación?
Se cobró una tarifa de uso mensual por usar la API I anterior. Esto fue independiente del uso real.
La nueva API II cambia esto a un modelo de facturación basado en el uso. Esto significa que hay un cargo por llamar a ciertas funciones de la API. Esto se cargará en créditos de Dlubal. Estos se pueden comprar en la tienda en línea.
Generando clave API
Para usar API II, se requiere una clave API además de la suscripción del servicio web. Una clave API es un fragmento de texto que se utiliza para la identificación y autenticación.
El usuario puede generar claves API en la extranet.
Cada una de las claves API generadas se asigna a una "empresa". Esto significa que cualquier usuario asignado a la empresa puede usar las teclas.
Es posible y, a menudo, útil generar varias claves API. No se cargarán costes adicionales. Por ejemplo, tiene sentido generar una clave separada para cada proyecto. De esta manera, el usuario puede distinguir entre los proyectos individuales en su contabilidad interna.
Instalación de la interfaz
El paquete para la interfaz está disponible a través de PiPI. Ejecute el siguiente comando para instalar el paquete:
pip install dlubal.api
Ejemplo de programa
Un pequeño ejemplo muestra el uso de la nueva API II. Se crea una viga en voladizo que consiste en un IPE 200.
Aquí está el código del programa:
importar dlubal.api.rfem como rfem
con rfem.Application() como rfem_app:
rfem_app.create_model(name='cantilever')
rfem_app.delete_all_objects()
inf = float('inf')
estructura = [
rfem.structure_core.Material(
nu=1,
nombre='S235'
),
rfem.structure_core.Section(
nu=1,
name='IPE 200',
material=1
),
rfem.structure_core.Node(
núm=1
),
rfem.structure_core.Node(
no=2,
coordenada_1=6,0
),
rfem.structure_core.Line(
nu=1,
definition_nodes=[1,2]
),
rfem.structure_core.Member(
nu=1,
línea=1,
section_start=1
),
rfem.types_for_nodes.NodalSupport(
nu=1,
nudos=[1],
muelle_x=inf,
muelle_y=inf,
muelle_z=inf,
rotacional_restraint_x=inf,
rotacional_restraint_y=inf,
rotacional_restraint_z=inf
),
]
rfem_app.create_object_list(estructura)
Primero, se importa la biblioteca de RFEM.
El comando with crea la instancia rfem_app de esta clase. La clave API se puede introducir como argumento para rfem.Application(). Sin embargo, no recomendamos esto por razones de seguridad. En su lugar, la clave API se debe almacenar en el archivo config.ini. Cómo funciona esto exactamente se explica en la documentación detallada de API II:
En la siguiente línea, se usa el método rfem_app.create_model(name='cantilever') para crear un nuevo modelo de RFEM. El nombre del modelo se transfiere como un parámetro.
En las siguientes líneas de código, el nuevo API II difiere fundamentalmente del enfoque "antiguo" en API I. En primer lugar, se definen los elementos de la estructura en la lista de estructuras. Luego, estos se transfieren junto con el comando rfem_app.create_object_list(structure).