API-Funktionen der Visual Basic-Sprache. Was ist eine API? Eine einfache Erklärung für Anfänger, was API-Daten sind

Um ihren Kollegen die Arbeit zu erleichtern und allen Windows-Programmen eine universelle Schnittstelle zur Verfügung zu stellen, haben Microsoft-Programmierer so etwas wie eine API – „Application Programming Interface“ – geschaffen.

Hierbei handelt es sich um eine Reihe von Funktionen und Prozeduren, die am häufigsten von Programmen verwendet werden können: Anzeigen eines Verzeichnisbaums, Suchen nach Dateien, Anzeigen eines Standardfensters mit Schaltflächen zum Schließen, Minimieren und Maximieren und viele andere. Dadurch muss ein Entwickler, der ein Programm für Windows erstellt, keine speziellen Unterroutinen für die Anzeige des Programmfensters, des Fensters zur Ordnerauswahl und anderer ähnlicher Elementaroperationen durchdenken und entwickeln – er kann einfach kernel32.dll oder user32.dll aufrufen aus den Bibliotheken, die Funktionen und Prozeduren der API enthalten, die Funktion, die er benötigt, und sie wird alles selbst für ihn erledigen. Es gibt viele solcher Funktionen und Prozeduren – etwa 600.

Im MS-DOS-Betriebssystem gab es keine API – derjenige, der sich verpflichtete, ein Programm für dieses Betriebssystem zu schreiben, musste Methoden zum Anzeigen von Bildern auf dem Bildschirm durchdenken und implementieren und Daten vom Benutzer empfangen Anfang bis Ende. Durch das Dateisystem reisen, Grafiken zeichnen, falls eine solche Möglichkeit erforderlich war 2. Dies machte die Entwicklung von Programmen mit einer benutzerfreundlichen Oberfläche zu einem sehr arbeitsintensiven Prozess; oft überstiegen der Zeit- und Arbeitsaufwand für die Erstellung einer akzeptablen grafischen Oberfläche für das Programm die Kosten für die Implementierung des programmeigenen Algorithmus, für den es erstellt wurde . Nicht umsonst waren sogenannte „Konsolen“-Anwendungen weit verbreitet, also Programme, die nur über die Befehlszeile ohne Schnittstelle funktionierten – Daten wurden über dieselbe Befehlszeile eingegeben oder aus einer darin angegebenen Datei erstellt, und die Ergebnisse wurden im einfachen Textmodus ausgegeben.

Mit dem Aufkommen des Windows-Betriebssystems wurde die harte Arbeit der Programmierer, das Erscheinungsbild des Programms und praktische Methoden zur Eingabe und Ausgabe von Informationen zu entwickeln, erheblich erleichtert – API-Funktionen wurden bereits in Windows 3.0 verwendet. Wenn nun ein Programmierer beispielsweise ein Texteingabefenster oder eine Bildlaufleiste erstellen wollte, musste er wie jede andere Funktion nur einen Aufruf an die Funktion zum Anzeigen eines solchen Fensters mit den von ihm benötigten Parametern schreiben Sprache, in der er sein Programm geschrieben hat, und keine großen Codemengen einzuführen, um ein Programm zu erstellen, das ein solches Fenster oder eine solche Leiste neu zeichnet (wobei er sich bewusst sein muss, dass er bei der Entwicklung des nächsten Programms, das ebenfalls solche Objekte verwendet, entwickeln muss (Sie können diesen Code erneut verwenden oder versuchen, den alten teilweise zu verwenden und ihn an die Bedürfnisse dieses neuen Programms anzupassen.) Daher stellte die Einführung der API einen revolutionären Durchbruch in der Programmiertechnologie dar, der es Ihnen ermöglichte, die erforderlichen Programme mit einer vertrauten, benutzerfreundlichen Schnittstelle viel schneller zu erstellen, ohne sich um Routinedetails wie die Programmierung von Standardschnittstellenobjekten für die Eingabe und Ausgabe von Informationen kümmern zu müssen.

In der Sprache Visual Basic for Applications (VBA) werden viele Funktionen und API-Prozeduren selbst aufgerufen, wenn das Programm vom Interpreter ausgeführt wird, so dass absolut keine Notwendigkeit besteht, sie zum Anzeigen von Texteingabe- und -ausgabefenstern oder zum Zeichnen geometrischer Formen darauf zu verwenden Bildschirm und andere einfache Aktionen – VBA ruft sie nach Bedarf auf, und das Programm darauf muss nur die entsprechenden Funktionen dieser Sprache verwenden. Manchmal sind jedoch bestimmte Aktionen erforderlich, für die es in den integrierten VBA-Funktionen entweder keine Analogien gibt oder die irrational oder zu langsam funktionieren. Beispielsweise ein Ordnerauswahlfenster mit einem Bild eines Verzeichnisbaums (Abb. 5.1) oder ein Dateisuchprogramm (analog in VBA-Funktionen – das „Application.FileSearch“-Objekt – arbeitet bei einer großen Anzahl von Dateien zu langsam). Für solche Fälle bietet VBA die Möglichkeit, API-Funktionen aufzurufen.

Leider ist die Verwendung von API-Funktionen in VBA nicht in der Hilfe dokumentiert. Um zu lernen, wie man sie verwendet, müssen Sie entweder nach Büchern oder Online-Quellen zur Office-Programmierung suchen oder den Code von Programmen analysieren, die Aufrufe von API-Funktionen enthalten.

In den allermeisten Fällen kann man bei der Programmierung für Office auf den Einsatz der API verzichten, manchmal kann aber auch schon der Aufruf einer API-Funktion zum gewünschten Ergebnis führen. Angenommen, Sie müssen sicherstellen, dass unterschiedliche Makros aufgerufen werden, wenn Sie einfach mit der Maus auf eine Schaltfläche in einer Word-Symbolleiste klicken und gleichzeitig diese Schaltfläche und die Umschalt- oder Strg-Taste drücken. Hier ist ein Codeausschnitt, der dies tut:

Deklarieren Sie die Funktion GetAsyncKeyState Lib „user32.dll“ (ByVal kState As Long) als Ganzzahl

GetAsyncKeyState(vbKeyShift oder vbKeyControl)

Wenn GetAsyncKeyState(vbKeyShift) Dann

Makro1 aufrufen: Sub beenden

ElseIf GetAsyncKeyState(vbKeyControl) Then

Makro2 aufrufen: Sub beenden

Die erste Zeile ähnelt dem „Reservieren“ einer API-Funktion für die Verwendung in einem VBA-Programm. Es ist ersichtlich, dass die GetAsyncKeyState-Funktion aus der Bibliothek user32.dll (einer Datei, die Programme enthält, die nur für die Verwendung durch andere Programme vorgesehen sind) aufgerufen wird und die Schlüsselnummer an diese Funktion übergeben wird und sie eine Ganzzahl zurückgibt (nämlich 0, wenn die Taste mit der entsprechenden Nummer wird nicht gedrückt, und -32767 oder 1, wenn gedrückt). Alle Funktionen oder Prozeduren, die aus Nicht-VBA-Bibliotheken aufgerufen werden, müssen mithilfe des Declare-Befehls reserviert werden.

Die vbKeyShift-Phrase im Befehl ist ein Ersatz für den Shift-Tastencode (sein Wert ist 16), und vbKeyControl ist, wie leicht zu verstehen ist, ein Ersatz für den Control-Tastencode. Die Struktur der „If...Then“-Anweisungen scheint klar zu sein 3, aber wenn nicht, schauen Sie in der VBA-Hilfe nach. Wie Sie sich erinnern, bedeutet der Aufrufbefehl vor dem Makronamen, dass er gestartet wird.

Im Internet gibt es russische Seiten, die sich mit API 4 befassen. Besuchen Sie sie, um mehr über diesen Funktionsumfang zu erfahren.

Die Arbeit mit APIs kann sowohl lohnend als auch frustrierend sein. Einerseits können Sie durch die Interaktion mit anderen Anwendungen die Zielgruppenreichweite und den „Wow“-Effekt Ihrer Anwendung erheblich steigern. Auf der anderen Seite geht es darum, Unmengen an Dokumentation zu lesen, Authentifizierungsstrategien zu studieren und nicht aussagekräftige (oder sogar fehlende) Fehlermeldungen zu analysieren.

Wenn Sie immer noch nicht vollständig verstehen, was eine API (Application Programming Interface) ist, lesen Sie zunächst die Erklärung von Skillcrush und dann den ersten Teil dieses Artikels, um mehr darüber zu erfahren.

„API“ ist ein unglaublich weit gefasstes Konzept – jedes Mal, wenn Ihre Anwendung mit einer anderen Anwendung „kommuniziert“, geschieht dies über eine Art API. Komponenten innerhalb Ihrer eigenen Anwendung, wie z. B. verschiedene Teile von Rails, kommunizieren auch über APIs miteinander. Dabei handelt es sich um mehr oder weniger unabhängige Unteranwendungen, die die Daten bereitstellen, die jede von ihnen zur Erfüllung ihrer spezifischen Aufgaben benötigt. In der App-Welt ist alles eine API!

Wenn Sie Anwendungen mit dynamischerer Front-End-Funktionalität erstellen (sowohl Single-Page-Javascript-Anwendungen als auch einfache Anwendungen mit einzelnen AJAX-Aufrufen), kommunizieren diese mit dem Rails-Backend über Ihre eigene API, was eigentlich nur ein oder zwei zusätzliche Codezeilen ist , um Ihren Controllern mitzuteilen, wie sie JSON oder XML anstelle von HTML bereitstellen sollen.

In diesem Tutorial erfahren Sie, wie Sie Ihre eigene API erstellen. In den folgenden Lektionen behandeln wir die Interaktion mit den APIs anderer Anwendungen. Die Lektionen sollten ein guter Ausgangspunkt für das Erlernen dieses Themas sein, es ist jedoch unwahrscheinlich, dass sie alle Fälle vollständig abdecken. Ein großer Teil der Arbeit mit APIs besteht darin, zu wissen, wie man deren Dokumentation liest und herausfindet, was sie von Ihnen wollen.

Punkte, die man beachten sollte

Überprüfen Sie die Fragen und prüfen Sie, ob Sie die Antworten kennen. Testen Sie sich nach Abschluss der Aufgabe erneut.

  • Wie Rails erkennt, welche Art von Datei Sie als Antwort erwarten, wenn Sie eine HTTP-Anfrage senden.
  • Was ist der Zweck der #respond_to-Methode?
  • Wie geben Sie ein User-Objekt zurück und geben gleichzeitig die Attribute an, die nicht in dieses Objekt aufgenommen werden sollen (das heißt, Sie können nicht einfach User.first zurückgeben)?
  • Nennen Sie die 2 Schritte hinter den Kulissen der #to_json-Methode.
  • Wie kann man einer Controller-Aktion mitteilen, dass sie nur eine Fehlermeldung ausgeben soll?
  • Wie erstelle ich eine eigene Fehlermeldung?
  • Warum können Sie keine sitzungsbasierten Controller-Authentifizierungsmethoden verwenden, wenn Sie programmgesteuerte Verbindungen zu Ihrer API zulassen möchten?
  • Was ist „Serviceorientierte Architektur“?

API-Grundlagen

Ihre Rails-Anwendung ist eigentlich bereits eine API, auch wenn Sie sie vielleicht nicht als API betrachten. Der Webbrowser, den Ihre Benutzer starten, ist ebenfalls ein Programm, sodass er tatsächlich eine API-Anfrage an Ihre Rails-Anwendung sendet, wenn der Benutzer eine neue Seite öffnet. Wir neigen dazu, so zu denken, weil das Rendern von HTML-Vorlagen eine so häufige Aufgabe ist, dass wir diese Funktionalität einfach als Standardantworttyp in unsere Serverprogramme integrieren und alles andere als etwas Ungewöhnliches betrachten.

Oft möchten Sie jedoch eine Anfrage stellen, bei der Sie sich nicht die Mühe machen müssen, einen Browser zu verwenden. Die Seitenstruktur (HTML) ist Ihnen vielleicht egal, aber im Gegenzug möchten Sie saubere Daten. Nehmen wir an, Sie möchten eine Liste aller Benutzer erhalten. Sie können etwas wie http://yourapplication.com/users anfordern, das mit Sicherheit die #index-Aktion auslöst und eine Liste aller Benutzer der App rendert.

Aber warum sollten Sie sich mit all diesen zusätzlichen Informationen herumärgern, wenn Sie lediglich eine Liste der Benutzer benötigen? Die einfachste Möglichkeit wäre, eine Anfrage an dieselbe URL zu senden und im Gegenzug eine JSON- oder XML-Antwort zu erwarten. Wenn Sie Ihren Rails-Controller richtig konfigurieren, erhalten Sie ein einfaches JSON-Array-Objekt zurück, das alle Benutzer enthält. Wunderbar!

Das gleiche Prinzip gilt, wenn Sie mit einer externen API kommunizieren. Nehmen wir an, Sie möchten die neuesten Tweets eines Benutzers von Twitter abrufen. Sie müssen Ihrer Rails-Anwendung lediglich mitteilen, wie sie mit der Twitter-API interagieren (d. h. sich selbst authentifizieren), die Anfrage senden und die zurückgegebenen „Tweets“ verarbeiten soll.

Erstellen einer API

Möglicherweise möchten Sie Ihre Rails-Anwendung zu einer reinen Backend-API für Frontend-Webseiten machen oder einfach nur lernen, wie Sie JSON senden, wenn das Frontend dies anfordert. In diesem Abschnitt wird nicht behandelt, wie vollwertige RESTful-APIs mit Authentifizierungsfunktionen erstellt werden. Dies ist eine reibungslose Einführung in die Behandlung Ihrer Anwendung als API.

Grundlagen

Wenn Sie möchten, dass Ihre Rails-Anwendung JSON anstelle von HTML zurückgibt, müssen Sie Ihren Controller dazu auffordern. Das Tolle daran ist, dass dieselbe Controller-Aktion unterschiedliche Typen zurückgeben kann, je nachdem, ob Ihr Benutzer eine reguläre Anfrage über den Browser stellt oder über die Befehlszeile auf die API zugreift. Dadurch wird basierend auf der Erweiterung der angeforderten Datei bestimmt, welche Art von Anfrage gestellt wurde, z. B. example.xml oder example.json.

Sie können überprüfen, was Rails über den erwarteten Dateityp denkt, indem Sie das Serverprotokoll überprüfen:

GET „/posts/new“ für 127.0.0.1 wurde am 2013-12-02 15:21:08 -0800 gestartet. Verarbeitung durch PostsController#new als HTML

Die erste Zeile sagt Ihnen, welche URL angefordert wurde, und die zweite sagt Ihnen, wohin sie gesendet wurde und wie Rails sie verarbeitet. Wenn Sie die Erweiterung .json verwenden würden, würde es so aussehen:

GET „/posts.json“ für 127.0.0.1 wurde am 04.12.2013 um 12:02:01 -0800 gestartet. Verarbeitung durch PostsController#index als JSON

Wenn Sie eine Testanwendung ausführen, versuchen Sie, andere URLs anzufordern. Wenn Ihr Controller sie nicht verarbeiten kann, erhalten Sie möglicherweise eine Fehlermeldung, aber Sie sollten trotzdem sehen können, was Rails unter Ihren Anfragen versteht.

JSON oder XML rendern

Sobald Sie sich entschieden haben, dass Sie auf Anfragen mit JSON oder XML antworten möchten, müssen Sie Ihren Controller anweisen, JSON oder XML anstelle von HTML darzustellen. Eine Möglichkeit hierfür ist die Verwendung der #respond_to-Methode:

Klasse UsersController< ApplicationController def index @users = User.all respond_to do |format| format.html # index.html.erb format.xml { render xml: @users } format.json { render json: @users } end end end

In diesem Fall übergibt #respond_to ein Formatobjekt an den Block, an den Sie einen entsprechenden Render-Aufruf anhängen können. Wenn Sie nichts tun, wird der HTML-Code mit der Standard-Rails-Vorlage gerendert (in diesem Beispiel app/views/index.html.erb).

Die #render-Funktion ist intelligent genug, um zu verstehen, wie eine Vielzahl von Formaten gerendert werden. Wenn Sie key:json übergeben, wird #to_json für den Wert aufgerufen, in diesem Beispiel @users . Dadurch werden Ihre Ruby-Objekte in JSON-Strings konvertiert, die an die anfordernde Anwendung übergeben werden.

Auf diese Weise erhalten Sie Ihre API. Natürlich kann die Erstellung einer API etwas komplexer sein, wenn Sie ein paar ausgefallene Dinge tun möchten, aber es bleibt alles bei den Grundlagen.

Angeben zurückgegebener Attribute

Angenommen, Sie möchten sicherstellen, dass Sie nicht die E-Mail-Adresse des Benutzers zusammen mit dem Benutzerobjekt zurückgeben. In diesem Fall möchten Sie die zurückgegebenen Attribute ändern und damit die Funktionsweise der #to_json-Methode ändern.

Früher hätten Sie einfach die Methode #to_json mit Ihrer Version überschrieben, aber jetzt ist das nicht mehr nötig – Sie überschreiben stattdessen die Methode #as_json. Die #as_json-Methode wird in der #to_json-Methode verwendet, sodass ihre Änderung implizit das Ergebnis von #to_json ändert, jedoch auf eine ziemlich spezifische Weise.

#to_json macht zwei Dinge: Es führt #as_json aus und ruft einen Hash der Attribute ab, die in JSON gerendert werden. Anschließend wird es mithilfe von ActiveSupport::json.encode in JSON gerendert. Wenn Sie also #as_json ändern, geben Sie den Teil der #to_json-Methode genauer an, den Sie tatsächlich ändern möchten.

In unserem Fall tun wir dies, indem wir #as_json in unserem Modell ändern, um nur die Attribute zurückzugeben, die wir benötigen:

# app/models/user.rb Klasse Benutzer< ActiveRecord::Base # Вариант 1: Полное переопределение метода #as_json def as_json(options={}) { :name =>self.name ) # Das E-Mail-Feld NICHT einschließen end # Option 2: Verwenden Sie die Standardmethode #as_json def as_json(options=()) super(only: [:name]) end end

Dann muss unser Controller nur noch das JSON wie gewohnt rendern (im Beispiel unten wird JSON immer zurückgegeben, unabhängig davon, ob eine HTML-Anfrage gesendet wurde oder nicht):

# app/controllers/users_controller.rb Klasse UsersController< ApplicationController def index render json: User.all end end

Beachten Sie, dass Sie #to_json nicht selbst aufrufen müssen, wenn Sie #render verwenden – es erledigt dies für Sie.

Manchmal sind bei Heroku möglicherweise zusätzliche Schritte erforderlich, um Ihre Fehlerseiten ordnungsgemäß anzuzeigen. Schau mal. Möglicherweise müssen Sie zuerst statische Seiten aus dem Verzeichnis app/public entfernen.

Gewährleistung der Sicherheit von außen

Angenommen, Sie möchten den Zugriff auf die API nur dann zulassen, wenn der Benutzer angemeldet ist. Ihre bestehende Authentifizierung im Controller übernimmt diese Aufgabe bereits – stellen Sie einfach sicher, dass Sie das richtige #before_action-Set haben (z. B. before_action:require_login). Möglicherweise benötigen Sie eine Funktionalität, mit der sowohl angemeldete als auch nicht angemeldete Benutzer die Seite anzeigen können, aber jeder sollte unterschiedliche Daten sehen. Sie möchten nicht, dass nicht authentifizierte Benutzer API-Aufrufe durchführen können, um vertrauliche Daten abzurufen. Ebenso möchten Sie nicht zulassen, dass unbefugte Benutzer bestimmte HTML-Seiten besuchen.

Wenn Sie Anfragen von einer Anwendung verarbeiten möchten, die kein Browser ist (z. B. über die Befehlszeile), können Sie sich zur Authentifizierung nicht auf Browser-Cookies verlassen. Aus diesem Grund verwenden die meisten APIs native Token als Teil des Authentifizierungsprozesses. Wir werden in der nächsten Lektion etwas mehr über Token sprechen.

Nächste Schritte

Sie verfügen nun über die Fähigkeiten, mit Ihrer Rails-Anwendung nicht nur HTML, sondern auch jedes andere Format zu rendern. Wenn Sie noch weiter gehen und anderen Entwicklern erlauben möchten, Dinge auf Ihrer Plattform zu erstellen (zum Beispiel, damit sie programmgesteuerte Anfragen stellen können, anstatt sich als Benutzer zu authentifizieren), müssen Sie Ihr API-System wesentlich robuster machen. Wir werden hier nicht alles behandeln, aber schauen Sie sich Folgendes an:

  • Der Artikel „Building Awesome Rails APIs“ beschreibt viele der besten Ansätze für den Übergang von einer Spielzeuganwendung zu industriellen API-Standards.

Serviceorientierte Architektur

Es ist an der Zeit, einen Architekturansatz namens Service-Oriented Architecture (SOA) einzuführen. Die Grundidee besteht darin, dass Ihre Anwendung aus vielen Diensten besteht, wie z. B. einem Zahlungssystem, einer Benutzerregistrierung, einem Empfehlungsmodul usw. Anstatt alles in einer Hauptanwendung aufzubauen, teilen Sie die Subsysteme in völlig unabhängige Teile auf, die über interne APIs miteinander kommunizieren.

Das ist aus vielen Gründen gut. Da sich jeder Teil Ihrer Anwendung nicht darum kümmert, wie andere Teile funktionieren, und nur weiß, wie er Daten über seine API anfordert, können Sie erhebliche Änderungen am Servicecode vornehmen und der Rest der Anwendung funktioniert wie zuvor. Sie können einen Dienst vollständig durch einen anderen ersetzen, und solange die Kommunikation über dieselben API-Methoden erfolgt, funktioniert alles reibungslos. Sie können externe APIs als Teil Ihrer Anwendung verwenden (z. B. Zahlungssysteme), anstatt Ihre eigenen zu schreiben. Sie können eine PHP-Anwendung erstellen, die mit einer Python-Anwendung kommuniziert, die mit einer Rails-Anwendung kommuniziert, und alles wird funktionieren, weil sie über eine API miteinander kommunizieren.

Im Allgemeinen ist es eine gute Idee, jeden Teil Ihrer Bewerbung so unabhängig wie möglich zu gestalten. Das Konzept von SOA zwingt Sie dazu, darüber nachzudenken, welche Methoden Sie anderen Teilen Ihrer Anwendung zur Verfügung stellen möchten, wodurch auch Ihr Code verbessert wird. Wenn Sie außerdem davon ausgehen, dass jede Hauptkomponente Ihrer Anwendung unabhängig ist, können Sie Probleme viel einfacher isolieren und Fehler sinnvoller behandeln.

Die Verwendung einer serviceorientierten Architektur für eine gesamte Anwendung ist so, als würde man ein riesiges, komplexes Ruby-Skript in übersichtliche Klassen und Methoden aufteilen, nur in größerem Maßstab.

Einer der bekanntesten Fälle des Übergangs zu einer serviceorientierten Architektur ist Amazon.com. Eines Tages im Jahr 2002 erklärte Jeff Bezos unverblümt, dass alle Arbeitsgruppen auf SOA umstellen müssten, sonst würden sie entlassen. Berüchtigt Blogeintrag Ein Google-Mitarbeiter, der für interne Zwecke gedacht war, aber versehentlich öffentlich gemacht wurde, sprach über die Leistungsfähigkeit von Amazon durch den Einsatz von SOA. Es ist eine großartige Lektüre, also schauen Sie sich das Buch unbedingt an, aber die Hauptpunkte von Bezos‘ Brief sind in den folgenden Zitaten aus dem Beitrag zusammengefasst:

1) Alle Teams stellen ihre Daten und Funktionalität nun über Serviceschnittstellen zur Verfügung.

2) Teams müssen über diese Schnittstellen miteinander kommunizieren.

3) Andere Formen der Interprozesskommunikation sind verboten: keine direkten Links, kein direktes Lesen der Daten eines anderen Befehls, keine Shared-Memory-Modelle, keine Hintertüren usw. Die einzige erlaubte Art der Interaktion ist der Zugriff auf die Serviceschnittstelle über das Netzwerk.

4) Es spielt keine Rolle, welche Technologie sie verwenden. HTTP, Corba, Pubsub, proprietäre Protokolle – kein Unterschied. Bezos ist das egal.

5) Ausnahmslos alle Service-Schnittstellen müssen zunächst so konzipiert sein, dass sie von außen steuerbar sind. Das heißt, das Team muss planen und entwerfen, um die Schnittstelle für Entwickler außerhalb des Unternehmens bereitstellen zu können. Keine Ausnahmen.

6) Wer diese Anforderungen missachtet, wird entlassen.

SOA ist ein ernstes Geschäft. Sicher, bei der Verwendung treten viele Probleme auf – schauen Sie sich diesen Beitrag über die „Lessons Learned“ von Amazon an –, aber es bietet unglaublich viele Vorteile.

Sie werden sich wahrscheinlich nicht allzu viele Gedanken über SOA machen, während Sie Spielzeug-Apps für sich selbst erstellen, aber es ist definitiv ein Problem, das auftauchen wird, wenn Sie anfangen, für ein IT-Unternehmen zu arbeiten, daher ist es eine gute Praxis, sich damit vertraut zu machen.

Dein Zielen

  1. Lesen Sie Abschnitt 7 des Rails Controllers Guide, um mehr über JSON- und XML-Rendering zu erfahren.
  2. Sie müssen nicht angeschaut werden (da sie etwas weiter gehen, als wir derzeit vorbereitet sind), aber wenn Sie interessiert sind, werfen Sie einen Blick auf Railscasts im Abschnitt „Zusätzliche Ressourcen“ am Ende der Lektion, um mehr darüber zu erfahren Vorteile der API.

Abschluss

Während des Javascript-Kurses werden wir enger mit Ihrer Anwendung als API zusammenarbeiten. In diesem Kurs erstellen Sie mehrere Full-Stack-Anwendungen, die AJAX-Aufrufe für eine bessere Benutzererfahrung verwenden, was im Wesentlichen das Rendern von XML- oder JSON-Daten anstelle einer vollständigen HTML-Seite beinhaltet. Anschließend erstellen Sie mehrere einseitige Javascript-Anwendungen, die auf der von Ihrer Rails-Anwendung bereitgestellten API basieren, um alle erforderlichen Daten aus der Datenbank abzurufen, ansonsten aber auf der Clientseite (im Browser) ausgeführt werden.

Der beste Weg, eine API zu verstehen, besteht darin, sie zu erstellen und mit ihr zu interagieren. Darauf werden wir uns in unseren Projekten konzentrieren.

API(Englisch) Programmierschnittstelle) - Dies ist die Anwendungsprogrammierschnittstelle. Die API einer bestimmten Anwendung oder eines bestimmten Dienstes stellt eine Reihe vorgefertigter Prozeduren, Funktionen und Variablen bereit, mit denen Drittentwickler ihre eigenen Anwendungen und Skripte für die Arbeit mit diesem Dienst erstellen können.

Beim Arbeiten über eine API sendet eine Anwendung eine Anfrage an einen Dienst und erhält eine Antwort mit den angeforderten Daten, unabhängig von der Programmiersprache, in der sie erstellt wurde.

Besitzer von Online-Shops, die Dienste von Drittanbietern und ihre eigenen Anwendungen nutzen, haben die Möglichkeit, über eine API darauf zuzugreifen:

Informationen zu getätigten Bestellungen

Verfügbare Aktionen (Methoden) zur Verarbeitung von Bestellinformationen:

  1. Bestellinformationen nach ID auswählen
  2. Bestellinformationen nach Filter auswählen
  3. Anzahl der Bestellungen nach Filter
  4. Erstellen Sie eine Bestellung
  5. Eine Bestellung löschen
  6. Massenlöschung von Bestellungen
  7. Auswahl aller verfügbaren Status für Bestellungen
  8. Bestellstatus aktualisieren
  9. Einen Kommentar zu einer Bestellung hinzufügen

Abonnenteninformationen

  1. Einen Abonnenten hinzufügen
  2. Einen Abonnenten löschen
  3. Massenlöschung von Abonnenten
  4. Abonnentendaten nach Filter auswählen
  5. Anzahl der Abonnenten nach Filter

Informationen zu registrierten Benutzern

Verfügbare Aktionen (Methoden) zur Verarbeitung von Informationen über Abonnenten:

  1. Auswählen von Informationen über registrierte Benutzer nach ID
  2. Auswählen von Informationen zu allen registrierten Benutzern
  3. Auswahl von Informationen zu allen vom Benutzer bei der Registrierung angegebenen Daten:
    • Vollständiger Name;
    • Kontakt-E-Mailadresse;
    • Kontakt Telefonnummer;
    • Angegebene Lieferadresse: Postleitzahl, Ortsname, Straßenname, Hausnummer, Gebäudenummer, Wohnungsnummer, Etage;

Beachten Sie! Bei der Registrierung ist es möglich, dass der Nutzer nicht alle oben genannten Felder ausfüllt.

API-Entwicklungspläne

In naher Zukunft planen wir die Öffnung von Schnittstellen zur Unterstützung der Interaktion von Geschäften mit Anwendungen und Diensten von Drittanbietern für die Arbeit mit:

  1. Katalogabschnitte.
  2. Waren.
  3. Ein Korb.
  4. Rabatte.
  5. Liefermethoden.
  6. Zahlungsarten.

Um die Interaktion mit der Beseller-Plattform-API zu testen, wurde ein Testshop beseller-api.shop.by erstellt.

Um auf den Testshop zuzugreifen, müssen Sie einen Benutzernamen und ein Passwort angeben. Diese erhalten Sie auf Anfrage bei Ihrem persönlichen Vorgesetzten.

Bevor Sie die Interaktion mit der API testen, empfehlen wir Ihnen:

  1. mehrere Bestellungen selbst aufgeben;
  2. Abonnieren Sie den Newsletter;
  3. Sehen Sie, wie Informationen zu aufgegebenen Bestellungen und Abonnenten im Shop-Administrationsbereich angezeigt werden.

Das Store Control Panel ist verfügbar unter: beseller-api.shop.by/manager/. Der Login und das Passwort beim Betreten des Control Panels ähneln dem Login und dem Passwort für den Zugriff auf den Shop.

Wie verbinde ich mich per API mit meinem Shop?

Um die Anwendung mit Ihrem Shop zu verbinden, müssen Sie eine API-Zugriffs-URL der Form angeben:

http://your_site_address:8082/graphql?token=your_personal_secret_key

Den geheimen Schlüssel erhalten Sie auf Anfrage von Ihrem persönlichen Vorgesetzten.

GraphQL-Funktionen und -Variablen für die Arbeit mit der Beseller-Plattform-API

So stellen Sie mithilfe der Programmiersprache PHP eine Verbindung zu einer API her

Um die Arbeit mit der Beseller-Plattform-API zu vereinfachen, können Sie Folgendes verwenden:

  1. Von uns entwickelte Klassen für PHP.
    1. GraphqlClient- empfängt und übermittelt Daten an den Server;
    2. GraphQlHelper- enthält implementierte Abfrage- und Mutations-APIs;
  2. Beispiele für die Verwendung von Klassen zum Vornehmen von Auswahlen und Änderungen in der Online-Shop-Datenbank.

Einrichten Ihrer lokalen Umgebung

Um das Senden von Anfragen an die API und die erhaltenen Antworten anschaulich zu demonstrieren, können Sie die lokale Umgebung verwenden.

Als lokale Umgebung wird GraphiQL Feen verwendet. Hierbei handelt es sich um eine Erweiterung für den Google Chrome-Browser, mit der Sie Anfragen an die API generieren können.

Nach der Installation der Anwendung erscheint in Ihrem Browser neben der Adressleiste ein Anwendungssymbol.

Öffnen Sie die GraphiQL Feen-Anwendung und gehen Sie zur Registerkarte „SERVER“, wählen Sie die POST-Sendemethode aus und geben Sie dann die API-Zugriffs-URL an.

Als Test-URL sollte folgende Adresse verwendet werden:

Die lokale Umgebung ist konfiguriert, Sie können Anfragen an die API generieren. Dazu müssen Sie den Reiter „ABFRAGEN“ öffnen

Erstellen einer Anfrage an die Beseller-API mithilfe von GraphiQL Feen und die erhaltene Antwort

Erläuterungen zum Screenshot:

  1. Gespeicherte Abfragen
  2. Feld zur Eingabe von Anfragen
  3. Variables Eingabefeld
  4. Antwort erhalten
  5. Start Knopf

Ein Beispiel für eine Anfrage zum Erhalt einer Liste der aufgegebenen Bestellungen für einen bestimmten Zeitraum

query ($first:Int, $offset:Int, $filter: OrdersFilterType)(
Bestellungen(first:$first, offset:$offset, filter:$filter)(
Kommentar
Status(
Ausweis
Beschreibung
Name
}
Erstellungsdatum
Aktualisierungsdatum
insgesamt (
Suffix
Wert
}
Zahlung (
Name
Beschreibung
kosten (
Suffix
Wert
}
}
Lieferung (
Name
Beschreibung
kosten (
Suffix
Wert
}
}
Währungen (
Bankleitzahl
Kurs
Suffix
}
Benutzerdaten(
Name
Beschreibung
Wert
}
}
}

Angabe des Zeitraums zum Abrufen von Daten zu aufgegebenen Bestellungen

{
"filtern": (
„date_after“: „2017-11-16T00:00:01Z“,
„date_before“: „2017-11-23T00:00:01Z“
}
}

Beispielantwort von der API

{{
"Daten": (
"Aufträge": [
{
„comment“: „Culpa officiis vel ut.“,
„create_date“: „22.11.2017 16:23:28“,
"Währungen": [
{
„bank_code“: „BYN“,
„Kurs“: 10000,
„Suffix“: „reiben.“
}
],
"Lieferung": (
"kosten": [
{
„Suffix“: „rub.“,
„Wert“: 0
}
],
„description“: „Kurier“,
„Name“: „Benutzerdefiniert“
},
"Zahlung": (
"kosten": [
{
„Suffix“: „rub.“,
„Wert“: 0
}
],
„description“: „Plastikkarten“,
„Name“: „Benutzerdefiniert“
},
"Status": (
„description“: „Neu“,
„id“: 1,
„Name“: „neu“
},
„gesamt“: [
{
„Suffix“: „rub.“,
„Wert“: 4450
}
],
„update_date“: „22.11.2017 16:23:28“,
"Benutzerdaten": [
{
„description“: „E-Mail-Adresse“,
„Name“: „E-Mail“,
"Wert": " [email protected]"
},
{
„description“: „Telefon“,
„Name“: „Telefon“,
„Wert“: „784.392.3949 x69329“
},
{
„description“: „Adresse“,
„Name“: „Registrierung“,
„value“: „607 Erik Station Suite 057\nReynaberg, WY 83542-0037“
},
{
„description“: „Kommentar“,
„Name“: „Kommentar“,
„value“: „Id name illo opto.“
},
{
„Beschreibung“: „Name“,
„name“: „fio“,
„value“: „Jordi Mann MD“
}
]
}



API – was ist das? Dekodierung, Definition, Übersetzung

API ist eine englische Abkürzung, welches dafür steht A Anwendung P Programmierung ICH ninterface – „Anwendungsprogrammierschnittstelle“. Typischerweise handelt es sich bei einer API um eine Reihe praktischer Funktionen, die es Ihnen ermöglichen, auf einen Dienst zuzugreifen und Daten von ihm anzufordern. Im Englischen wird diese Abkürzung „hey-pi-ay“ ausgesprochen, aber russischsprachige Programmierer machen ihr Leben nicht unnötig kompliziert und sagen „ápi“.

Ein klassisches Beispiel für eine API ist Yandex.maps: Jeder mehr oder weniger erfahrene Programmierer oder Webmaster kann mithilfe praktischer API-Funktionen, die übrigens vorhanden sind, eine Yandex-Karte jeder Stadt oder jedes Dorfes mit den von ihm benötigten Einstellungen auf seiner Website platzieren werden von Yandex völlig kostenlos bereitgestellt und umfassen fast alle Karteneinstellungen, die Benutzern der Yandex.Maps-Website zur Verfügung stehen.




Haben Sie herausgefunden, woher das Wort kommt? API, seine Erklärung in einfachen Worten, Übersetzung, Herkunft und Bedeutung.

Laut Wikipedia ist eine API ein Satz vorgefertigter Klassen, Prozeduren, Funktionen, Strukturen und Konstanten, die von einer Anwendung (Bibliothek, Dienst) zur Verwendung in externen Softwareprodukten bereitgestellt werden. Wird von Programmierern zum Schreiben aller Arten von Anwendungen verwendet.

Da ein Großteil der Wikipedia jedoch für viele Menschen nicht verständlich ist, werde ich versuchen, in Laienbegriffen zu erklären, was eine API ist und wofür sie normalerweise gemacht ist und wie sie verwendet wird.

APIs sind völlig unterschiedlich, aber als Beispiel habe ich eine Situation gewählt, in der wir ein Filialnetz und nur eine gemeinsame Datenbank haben. Stellen Sie sich vor, Sie besitzen ein Partnerprogramm. Das Partnerprogramm funktioniert nach folgendem Prinzip: Eine Person registriert sich im Partnerprogramm und erhält eine Store-Engine. Dann kann er diesen Store auf seinem Hosting installieren und mit der Arbeit beginnen. Aber alle Daten zu diesem Shop stammen aus unserer Datenbank, das heißt, wir müssen jedem Partner Zugriff auf unsere wertvolle Datenbank gewähren. Können Sie sich vorstellen, wie gefährlich das ist? Schließlich müssen wir den Zugriff auf die Datenbank von außen ermöglichen, damit alle Partnershops damit arbeiten können. Was passiert, wenn Ihre Zugangsdaten in die Hände von Kriminellen geraten?

Hier hilft uns die API. Anstatt Zugriff auf die Datenbank zu gewähren, erstellen wir einfach eine API, über die Partnergeschäfte Informationen erhalten. Auf diese Weise funktioniert nur unser API-Skript mit der Datenbank und die Geschäfte funktionieren mit diesem Skript.

Wie es funktioniert?
Beispielsweise sendet ein Shop eine Anfrage an unsere API
http://ourapi.com/get_books?limit=20
und unsere API versteht, dass sie eine Liste von Büchern mit 20 Exemplaren liefern muss, weil wir den Grenzwertparameter gleich 20 übergeben haben. Unser Skript (API) stellt eine Anfrage an die Datenbank, empfängt eine Liste von Büchern und gibt sie an die zurück in einem bestimmten Format speichern (eigentlich wird nur angezeigt). Das Format, in dem die API Informationen zurückgibt, kann absolut beliebig sein. Hauptsache, unsere Shops verstehen es. Dies kann JSON, ein serialisiertes Array oder XML sein. Das ist nicht mehr wichtig, Hauptsache man versteht das Prinzip.

Den Befehlssatz, den die API versteht, definieren Sie selbst. In unserem Fall könnten dies beispielsweise Befehle sein, wie zum Beispiel eine Liste mit Büchern abrufen, eine Liste mit Kategorien abrufen, beliebte Bücher abrufen, neue Bücher abrufen usw. Selbst wenn ein Angreifer auf diese Weise die Möglichkeit erhält, auf unsere API zuzugreifen, kann er lediglich eine Liste von Büchern erhalten, und dies stellt keine Gefahr für unsere Datenbank dar.

Ich hoffe, ich konnte anhand eines einfachen Beispiels erklären, was eine API ist. Wenn Sie Fragen haben, stellen Sie diese in den Kommentaren oder im Forum und wir helfen Ihnen gerne bei der Lösung.

gastroguru 2017