Beiträge

Eine Delphi-Demo mit WeatherStack von APILayer

radstudiodelphiidecbuilder

Ich habe kürzlich auf der italienischen Delphi Day-Konferenz Ende Juni einen Vortrag über die Verwendung von Cloud- und REST-APIs von Delphi gehalten. Unter den verschiedenen Demos habe ich einige Experimente mit APILayer-REST-APIs durchgeführt. Falls Sie es nicht wissen, APILayer ist ein Unternehmen, das wie Embarcadero zu Idera gehört.


Warum REST-APIs

Bevor wir uns mit spezifischen APIs und Demos befassen, möchte ich die Relevanz der Verwendung von APIs im Kontext einer Client-Anwendung wie der mit Delphi erstellten erörtern. In der Vergangenheit bestand die häufigste Methode zum Hinzufügen einer Funktion zu einem Programm darin, den richtigen Code zu schreiben oder eine vorhandene Bibliothek zu verwenden, um die Funktion hinzuzufügen, und den kompilierten Code der Funktion zusammen mit der Anwendung zu verteilen.

Heutige Online-Dienste und REST-APIs bieten oft ähnliche Funktionen, die aktiviert werden, indem die richtigen Parameter mit einem HTTP-Aufruf an einen Server übergeben und das Ergebnis zurückerhalten werden. Beispiele sind Bildumwandlungen, das Erstellen eines PDF, das Umwandeln von Text in Sprache oder das Lesen des in ein Bild eingebetteten Textes.

Warum sollten Sie einen Ansatz dem anderen vorziehen? Es gibt Fälle, in denen nur eine der Alternativen realistisch ist (schnelles Grafik-Rendering erfordert eine installierte Grafikbibliothek, während eine KI-Fähigkeit im Allgemeinen online verfügbar ist), aber in anderen Szenarien könnten beide Ansätze möglich sein.

Die Nutzung einer lokalen Bibliothek hat folgende Vorteile:

  • Generell schnellere Ausführung
  • Keine Notwendigkeit einer Internetverbindung
  • Möglicherweise die Möglichkeit, das Feature zu optimieren und anzupassen und es besser mit dem Code und der Benutzeroberfläche zu verknüpfen
  • Auf der Sicherheitsebene müssen Sie sich keine Sorgen darüber machen, dass die Kommunikation verschlüsselt wird, um zu verhindern, dass jemand während der Übertragung auf Anwendungsdaten zugreift

Die Verwendung einer REST-API hat folgende Vorteile:

  • Halten Sie die App kleiner, da Sie keinen zusätzlichen Bibliothekscode verteilen müssen
  • Verwenden Sie immer die neueste Version der Bibliothek, da diese separat von der Client-Anwendung aktualisiert werden kann
  • Auf der Sicherheitsebene müssen Sie sich keine Gedanken über die Aktualisierung der Bibliothek machen, falls ein Problem entdeckt wird, und müssen eine neue Version der Anwendung bereitstellen

Schließlich  gibt es oft einen Unterschied zwischen den Kosten einer Bibliothek und einer REST-API:

  • Sofern die Bibliothek nicht kostenlos und Open Source ist, fallen im Allgemeinen im Voraus feste Kosten pro Entwickler an
  • Die meisten REST-APIs haben ein Pay-per-Use-Modell, oft mit einer kostenlosen Ebene, die Sie für Entwicklung und Tests verwenden können
  • Die REST-API ist also möglicherweise für eine begrenzte Nutzung billiger, wird jedoch für eine umfassende Nutzung teurer

Einführung von APILayer

APILayer ist ein Unternehmen von Idera, das sich darauf konzentriert, gehostete APIs anzubieten und einen API-Marktplatz zu erstellen, der auch APIs von Drittanbietern hostet. Sie können mehr über die vielen verfügbaren Dienste unter  https://apilayer.com/ lesen.

Es gibt viele leistungsstarke APIs als Teil von APILayer, und während einige in einer Webanwendung (wie IpStack) sinnvoller sind, sind viele andere auch in einer Client-Anwendung sinnvoll, wie die von FileStack angebotenen Dateiverarbeitungsdienste ( https://www .filestack.com/ ) oder die raffinierte E-Mail-Verifizierungs-Api eines Drittanbieters ( https://apilayer.com/marketplace/email_verification-api ).

In meiner Demo unten konzentriere ich mich auf eine einfache API, möglicherweise nicht die leistungsstärkste: WeatherStack, die, wie der Name schon sagt, aktuelle, historische und vorhergesagte Daten über das Wetter liefern kann:

https://weatherstack.com/

Verwenden des RAD Studio-REST-Debuggers

Sobald Sie die REST-API identifiziert haben, die Sie verwenden möchten, können Sie am einfachsten mit der Entwicklung einer Client-Anwendung beginnen, indem Sie den REST-Debugger verwenden, der als Teil der RAD Studio-Installation verfügbar ist (und über das Menü „Extras“ zugänglich ist) und auch als separater kostenloser Download erhältlich ist für jedermann ( https://www.embarcadero.com/free-tools/rest-debugger ).

Der Debugger bietet die Möglichkeit, eine REST-API zu konfigurieren, diese Konfiguration für die zukünftige Verwendung zu speichern (oder sie mit einem anderen Entwickler zu teilen) und die Konfiguration in eine Delphi- oder C++Builder-Anwendung zu importieren.

In einem einfachen Fall, wie dem von WeatherStack, müssen Sie nach dem Start des REST-Debuggers zunächst den primären Endpunkt konfigurieren:

apilayer_01-5661070

Als nächstes müssen Sie die richtige Parameterkonfiguration festlegen, einschließlich des spezifischen Endpunkts (aktuell), des Abfrageparameters und der access_key-Authentifizierungsinformationen:

apilayer_02-4335087

Die Parameter hängen vom Endpunkt ab und sind in der API-Dokumentation aufgeführt. An dieser Stelle können Sie die Schaltfläche SendRequest verwenden, um die API auszuprobieren und die Antwort im unteren Teil der Benutzeroberfläche des REST-Debuggers zu überprüfen:

apilayer_03-3656655

Die resultierende Datenstruktur ist relativ komplex, aber wir können einige der verschachtelten Tabellen (wie den oben sichtbaren Standort) in einer Tabellenstruktur herausfiltern. Da wir wahrscheinlich nach den aktuellen Daten suchen, können wir dieses JSON-Stammelement verwenden, um die Daten in einer Tabellenstruktur abzurufen:

apilayer_04-4024551

Erstellen einer tatsächlichen Demo in Delphi

Sobald Sie mit der Konfiguration und den Daten A (möglicherweise einschließlich der Tabellendaten) zufrieden sind, können Sie die Schaltfläche „Komponente kopieren“ des REST-Debuggers verwenden, um die Entwicklung einer Anwendung zu optimieren. Tatsächlich erfasst diese Schaltfläche die Konfiguration der REST-Client-Bibliothekskomponenten und ermöglicht Ihnen, sie in ein Formular oder Datenmodul in der RAD Studio-IDE einzufügen.

In diesem Fall habe ich einfach eine einfache FireMonkey-Anwendung mit Delphi erstellt, ein Datenmodul hinzugefügt und die Komponentenkonfiguration darin eingefügt. Es ergibt sich folgender Datenbaustein:

apilayer_05-5797490

Die tatsächliche Konfiguration der Komponenten ist die folgende:

Wie Sie sehen, hat die RESTClient-Komponente die Gesamtkonfiguration der Site, die RESTRequest bezieht sich auf den Endpunkt und seine Parameter, die optionale RESTResponse-Komponente enthält die Ergebnisse und kann sie über die RESTResponseDataSetAdapter-Komponente an eine In-Memory-Tabelle, die FDMemTable, übergeben Komponente.

An diesem Punkt benötigen Sie im Hauptformular eine Schaltfläche zum Tätigen des Anrufs und ein Bearbeitungsfeld mit dem Standort und einer Anzeigekomponente (ich habe ein schreibgeschütztes Bearbeitungsfeld verwendet). Im OnClick-Event-Handler der Schaltfläche können Sie Code wie den folgenden schreiben:

Alternativ können Sie die Eingabe und die Ausgabe über Visual LiveBindings verknüpfen, indem Sie die Eingabebearbeitung mit den Anforderungsparametern und das spezifische Feld der In-Memory-Tabelle mit der Ausgabesteuerung verbinden. Um dies tun zu können, müssen Sie dies zunächst tun Ausführen der HTTP-Anforderung zur Entwurfszeit mithilfe eines bestimmten Befehls der RESTRequest-Komponente. Dadurch werden die Metadaten der Komponenten, einschließlich der In-Memory-Tabelle, gefüllt. Danach können Sie die Eingabe und die Ausgabe im LiveBindings-Designer verbinden und den Code speichern, der beim Drücken der Schaltfläche ausgeführt wird, um:

Dies ist die Konfiguration des LiveBindings-Designers:

apilayer_06-5228925

Und schließlich ist dies die Anwendung zur Laufzeit an diesem heißen Sommertag:

apilayer_07-6389876

Fazit

Wie Sie gesehen haben, ist die Implementierung eines Clients für eine REST-API in Delphi relativ einfach (dasselbe habe ich bereits in der Vergangenheit für eine  andere API demonstriert hier ). Nun gibt es im Fall einer Wetteranwendung nicht viele Alternativen im Vergleich zum Zugriff auf Live-Daten von einem Webdienst, während in anderen Szenarien die Verwendung einer API eine Alternative im Vergleich zur Einbettung derselben Funktion in einen Bibliotheksteil der Anwendung wäre.

Wir planen, einige weitere APIs von APILayer im Embarcadero-Blog vorzustellen, also bleiben Sie dran und teilen Sie uns gerne Ihre Ideen mit.


Coding Boot Camp

Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

Kommentieren

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

IN THE ARTICLES