Co je API?
API (Application Programming Interface) je rozhraní, které umožňuje komunikaci mezi různými softwarovými aplikacemi. API stanovuje pravidla pro výměnu informací mezi programy.
S API II je tedy možné přistupovat pomocí vlastního programovaného softwaru k funkcím RFEM 6 / RSTAB 9. Například je možné generovat modely, vytvářet zatížení, spustit výpočty a nakonec získávat výsledky.
V RFEM 6 / RSTAB 9 již existuje API, a to webové rozhraní (API I). Toto zůstane i nadále zachováno. Není tedy nutné převádět již vytvořený software na API II.
Když se do RFEM 6 / RSTAB 9 přidají nové funkčnosti, budou dostupné pouze v API II. API I zůstane ve své současné podobě "zmraženo".
Jaké jsou technické rozdíly oproti "starému" API?
Oba rozhraní jsou primárně založena na webové technologii. RFEM 6 / RSTAB 9 tedy komunikuje s klientským softwarem přes protokol HTTP (respektive HTTPS).
V API I si klient a server vyměňují zprávy ve formátu SOAP. Naproti tomu API II používá místo toho protokol gRPC.
S SOAP se zprávy vyměňují ve formátu XML. Komunikace pomocí SOAP má relativně velký přenosový objem.
Naopak s gRPC se zprávy vyměňují v lehkém binárním formátu založeném na protokolu buffers. Je to mnohem efektivnější než textové formáty jako XML nebo JSON.
gRPC používá novější protokol HTTP/2, což také zvyšuje efektivitu přenosu.
V novém API II je možné, aby bylo více objektů seskupeno do seznamu a pak předáno. Není již potřeba mnoho malých API-Volání, ale pouze několik, což také zvyšuje efektivitu. Na příkladu níže je uvedeno, jak tato dávková technika funguje.
Všechny tyto opatření ke zvýšení efektivity vedou k tomu, že komunikace přes nové API II je přibližně desetkrát rychlejší než přes API I.
API II umožňuje, aby byl stejný kód spuštěn na třech různých platformách bez jakýchkoliv změn.
- Jako samostatný Python program, který zvenčí přistupuje k lokálně nebo v síti nainstalovanému RFEM 6.
- V interní skriptové konzoli RFEM 6.
- V Dlubal-Cloud.
Samostatný program
Na vašem počítači je nainstalován běžný RFEM 6. Váš Python program komunikuje přes API II s RFEM.
Skriptová konzola
Váš skript je spuštěn přímo ve skriptové konzoli RFEM.
Dlubal-Cloud
Pro tento případ použití není potřeba, aby byl RFEM lokálně nainstalován. Napíšete svůj aplikační program, který komunikuje se serverem v Dlubal-Cloud. Váš aplikační program generuje data o struktuře a zatížení na serveru. Na serveru se provede výpočet. Váš aplikační program čte výsledky z výpočtu a vyhodnocuje je.
Jak se mění zúčtování?
Použití starého API I bylo účtováno měsíčním poplatkem za používání. Bylo to nezávislé na skutečném používání.
S novým API II se to mění na model zúčtování závislý na používání. To znamená, že volání některých konkrétních funkcí API je zpoplatněno. Je účtováno v Dlubal-Creditech. Tyto lze zakoupit v e-shopu.
Generování API klíče
Pro používání API II je kromě webového předplatného potřebný i API klíč. API klíč je textový řetězec, který slouží k identifikaci a autentizaci.
API klíče může uživatel generovat v extranetu.
Každý z generovaných API klíčů je přiřazen k firmě. To znamená, že každý uživatel přiřazený k oné firmě může klíče používat.
Je možné a často také užitečné generovat více API klíčů. Tím nevznikají žádné další náklady. Je užitečné například pro každý projekt generovat vlastní klíč. Tím může uživatel ve svém interním zúčtování rozlišovat mezi jednotlivými projekty.
Instalace rozhraní
Balíček pro rozhraní je k dispozici přes PiPI. Nainstalujte balíček následujícím příkazem:
pip install dlubal.api
Ukázka programu
Na malém příkladu je demonstrováno použití nového API II. Vytvoří se konzolový nosník, který sestává z IPE 200.
Zde je programový kód:
import dlubal.api.rfem as rfem
with rfem.Application() as rfem_app:
rfem_app.create_model(name='cantilever')
rfem_app.delete_all_objects()
inf = float('inf')
structure = [
rfem.structure_core.Material(
no=1,
name='S235'
),
rfem.structure_core.Section(
no=1,
name='IPE 200',
material=1
),
rfem.structure_core.Node(
no=1
),
rfem.structure_core.Node(
no=2,
coordinate_1=6.0
),
rfem.structure_core.Line(
no=1,
definition_nodes=[1,2]
),
rfem.structure_core.Member(
no=1,
line=1,
section_start=1
),
rfem.types_for_nodes.NodalSupport(
no=1,
nodes=[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(structure)
Nejprve se importuje knihovna RFEM.
Příkazem with se vytvoří instance rfem_app z této třídy. Jako argument rfem.Application() může být předán API klíč. Z bezpečnostních důvodů se to však nedoporučuje. Místo toho by měl být API klíč uložen v souboru config.ini. Jak přesně to funguje, je vysvětleno v podrobné dokumentaci API II:
V následujícím řádku se metodou rfem_app.create_model(name='cantilever') vytvoří nový RFEM model. Název modelu lze předat jako parametr.
V následujících řádcích programu se nové API II zásadně liší od starého přístupu v API I. V seznamu structure jsou nejprve definovány strukturální prvky. Ty jsou poté předány příkazem rfem_app.create_object_list(structure).