Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. APIs
Code

Erstellen Sie Ihr Startup: Entwerfen einer RESTful-API

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called Building Your Startup With PHP.
Building Your Startup: Running Multiple Domains
Building Your Startup With PHP: Bootstrap Your Home Page

German (Deutsch) translation by Wei Zhang (you can also view the original English article)

Final product image
What You'll Be Creating

Dieses Tutorial ist Teil der Building Your Startup with PHP-Serie auf Envato Tuts +. In dieser Serie führe ich Sie durch die Einführung eines Start-ups von der Idee zur Realität mit meiner Meeting-Planer-App als ein echtes Beispiel. Bei jedem Schritt werde ich den Meeting-Planer-Code als Open-Source-Beispiele veröffentlichen, von denen Sie lernen können. Ich werde auch auf geschäftliche Probleme im Zusammenhang mit dem Start eingehen, sobald sie auftreten.

Warum eine API für Ihr Startup erstellen?

Der Hauptgrund, warum ich zu diesem Zeitpunkt eine API zu Meeting Planner hinzufüge, ist die Erstellung einer Grundlage für die Erstellung einer mobilen iOS-Anwendung. Die mobile App verwendet die API, um Benutzer zu registrieren und anzumelden und ihnen dann zu ermöglichen, Besprechungen zu planen.

APIs haben auch den sekundären Effekt, dass Sie den gesamten Code, den Sie bisher geschrieben haben, überdenken und besser organisieren können. Es gibt sicherlich Orte im Meeting-Planer-Code, die sich gewunden haben. Jetzt muss ich sie für mobile Apps noch einmal vereinfachen, um die Features über dem Kampf zu replizieren.

In Zukunft könnte es andere Gründe für den Aufbau der API geben. Ich möchte zum Beispiel Entwicklern von Drittanbietern ermöglichen, die Art von Besprechungen und Ereignissen zu erweitern, die von Meeting Planner geplant werden. Dadurch können sie zusätzliche Daten sammeln und freigeben.

Zur Erinnerung: Der gesamte Code für Meeting Planner wird als Open Source bereitgestellt und im Yii2 Framework for PHP geschrieben. Ein wesentlicher Teil dieser Episode beschreibt, wie das Yii Framework zur Unterstützung einer API verwendet wird. Wenn Sie mehr über Yii2 erfahren möchten, schauen Sie sich meine Parallel-Serie Programmierung mit Yii2 an.

Bevor ich auf den API-Code eingehe, möchte ich Sie ermutigen, Ihr erstes Meeting zu planen, damit Sie wissen, wovon ich rede.

Wenn Sie Fragen zu diesem Tutorial oder der Anwendung selbst haben, nehme ich an den folgenden Diskussionen teil und Sie können mich auch @lookahead_io auf Twitter erreichen. Ich bin immer offen für neue Feature-Ideen für Meeting Planner sowie Vorschläge für zukünftige Serienepisoden.

Entwerfen Ihrer API

Als ich mich darauf vorbereitete, die API zu erstellen, gab es verschiedene Konzepte, die ich verstehen musste. Ich habe einige davon in Programmieren mit Yii2 angesprochen: Aufbau einer RESTful API (Envato Tuts +).

Zuerst musste ich einen Endpunkt für die API erstellen, in dem alle Anrufe von mobilen Apps eingehen würden. Ich entschied mich, einen unabhängigen dritten Baum in dem Yii Advanced Application Framework, z. https://api.meetingplanner.io statt https://meetingplanner.io/api/. Dies ermöglicht eine saubere Trennung des API-Codes vom Rest des Dienstes.

Zweitens musste ich Sicherheit in der API entwerfen. Im heutigen Tutorial werde ich die einfache Alpha-Sicherheit demonstrieren, die wir verwenden, aber wir werden sie im Laufe der Zeit verstärken, und ich werde wahrscheinlich in Zukunft mehr darüber schreiben. Es gibt einen Sicherheitsaspekt bei der Verwendung und Übertragung der API-Schlüssel und -Anfragen, aber es ist auch wichtig sicherzustellen, dass die API die Sicherheitsprotokolle der Anwendung erzwingt. Beispielsweise kann ein Benutzer die Teilnehmer eines Meetings nicht anfordern, wenn sie nicht der Organisator des Meetings oder einer seiner Teilnehmer sind.

Drittens möchte ich den API-Code für die Versionierung vorbereiten. Zum Beispiel könnte eine ältere iOS-Anwendung, die nicht aktualisiert wurde, API v1.0 verwenden, während ein späteres Update API v2.0 aufrufen kann. Yii stellt Methoden dafür zur Verfügung, aber ich habe sie noch nicht im aktuellen Design implementiert.

Viertens wollte ich so weit wie möglich den REST-Standards entsprechen. Das ist etwas, was ich begonnen habe, aber es wird mehr Forschung erfordern, um es vollständig zu implementieren.

Zu guter Letzt musste ich zunächst die Breite der Funktionalität ansprechen, die die API bereitstellen würde. Zunächst konzentrierte ich mich bei der Entwicklung mobiler Anwendungen auf das Erstellen schreibgeschützter Funktionen. Das heutige Tutorial und der Code konzentrieren sich hauptsächlich auf Funktionen für schreibgeschützte Anwendungen, d. H. Zeigen Sie mir die Meetings des Benutzers. Aber es beinhaltet auch die Benutzerregistrierung. In naher Zukunft werden wir weitere Schreibfunktionen hinzufügen, z. B. ein Meeting erstellen, einen Teilnehmer hinzufügen, einen Meeting-Ort hinzufügen, eine Einladung abschließen usw.

Betrachten Sie dieses Tutorial als ersten Schritt zu einer robusten, abgeschlossenen Service-API für unsere Anwendung.

Erstellen der API

Erstellen der API-Servicebaumstruktur

Building Your Startup - the API tree

Meeting Planner verwendet das Yii Advanced Application-Framework, das eine Front-End-Struktur für die Anwendung und eine Back-End-Struktur für die Verwaltungskomponente enthält, und wir erstellen eine dritte Struktur für die API.

Ich habe beschrieben, wie Sie dies früher in Programmieren mit Yii2: Erstellen einer RESTful API (Envato Tuts +) tun.

Zuerst habe ich den Back-End-Baum und die zugehörigen Umgebungseinstellungen dupliziert:

Und ich habe die @api alias to /common/config/bootstrap.php hinzugefügt:

Als nächstes beginnen wir mit dem Aufbau der Kernfunktionalität.

Sicherung der API

Beim Erstellen und Testen der iOS-Anwendung habe ich einige grundlegende Sicherheitsfunktionen entwickelt. Ich werde das in Zukunft robuster machen.

Alle API-Aufrufe müssen eine app_id und app_secret kennen. Diese werden in irgendeiner Form von HTTPS übertragen. Es gibt jedoch keine Garantie dafür, dass wir diese schützen können. Daher müssen wir die Anwendung so konzipieren, dass sie gegen die Entdeckung dieser Schlüssel resistent ist.

Im Moment habe ich die Datei mp.ini in / var / secure so erweitert, dass sie Folgendes enthält:

Dann habe ich ein Service.php-Modell erstellt, um die Verifizierung dieser Schlüssel zu verwalten. Da wir dies robuster machen, muss ich nur einen Code ändern.

Als Nächstes habe ich in allen API-Controllern eine beforeAction eingerichtet, um die obige Methode wiederzuverwenden:

Die Hauptschwächen hierbei sind, dass die Sicherheitsschlüssel bei jedem Aufruf übertragen werden und die Abfrageparameter nicht signiert sind. Die Übertragung über HTTPS hilft, ist aber nicht vollständig sicher. Ich werde das in Zukunft verbessern.

Registrierung und Login

Die einzigen zwei API-Aufrufe, die vollständig auf API-Schlüsseln basieren, sind die Registrierung und die Anmeldung. Mobile Nutzer können sich über OAuth registrieren und uns ihre OAuth-Service-Token senden, oder sie können ihre E-Mail-Adresse direkt an uns übermitteln.

Nach dem Empfang erhält jeder Benutzer ein eindeutiges Token, und dieses Token sichert die zukünftigen API-Aufrufe dieses Benutzers.

Ich muss noch mehr tun, um die Sicherheit zu verbessern, aber das werde ich auch heute nicht behandeln.

Hier ist der erste Code, um einen Benutzer über die API zu registrieren und ein Token zu erstellen:

Das UserToken ist eine einzigartige 40-stellige zufällige Zeichenfolge, die es noch schwieriger zu erraten, als glauben, dass Amerika Donald Trump wählen würde, um sie zu führen.

Der Besprechungscontroller

Betrachten wir nun Aufrufe für einen bestimmten Bereich der API, in denen Informationen zu Meetings angefordert werden. Hier ist der erste Teil von /api/controllers/MeetingController.php:

Beachten Sie oben, dass jede Aktion überprüft, ob die Token korrekt sind.

Dann ist jeder API-Aufruf für Meetings identisch strukturiert, wie unten gezeigt (lobe meinen Versuch der Disziplin):

Vorläufig umfasst jeder Aufruf die $app_id, den $app_secret und den $token für den angemeldeten Benutzer. Ich werde dies für die Sicherheit in naher Zukunft ändern. Es ist sicher, aber nicht robust sicher.

Sehen wir uns actionList an, in der der Filter für die Besprechung der Benutzer nach dem Argument $statusaufgelistet wird, um sie zu filtern:

Eventuell begrenzt die API die Anzahl der Besprechungsanfragen für jeden Status, d. H. Zeigt mir die letzten 15 Besprechungen im Planungsmodus durch diesen Benutzer an.

Alle Meeting-Methoden sind in das MeetingAPI-Modell integriert. Hier ist der Code für die Methode meetinglist():

Zuerst verifiziert die Methode das Token als zu dem Benutzer gehörend:

Hier ist der Code für UserToken::lookup():

Dann überprüfen wir den Filter auf $status und holen die $timezone des Benutzers:

Und schließlich fragen wir eine Liste der Meetings des Benutzers ab und transponieren sie manuell in ein Array von Objekten:

Während es möglicherweise eine einfachere Möglichkeit gibt, die Datenbankergebnisse zuzuordnen, die in der API zurückgegeben werden, ermöglicht es die manuelle Umsetzung der komplexesten Tabelle Meeting, zu steuern, was die API-Ergebnisse für Programmierer bereitstellen. Es ist tatsächlich eine Chance für mich, die API gegenüber den ursprünglichen Code- und Datenbankeigenschaften zu verbessern und zu vereinfachen.

Beispielsweise gibt es Code, mit dem Meeting Planner Unterüberschriften in der Benutzeroberfläche generieren muss, die nicht in der Datenbank gespeichert sind. Anstatt zu verlangen, dass die iOS-Anwendung diesen komplexen Code dupliziert, generieren wir nur die Unterüberschrift und geben sie in den API-Ergebnissen zurück.

API-Aufrufe durchführen

Hier ist eine vorläufige Möglichkeit, API-Aufrufe zu erstellen und zu testen. Zum Beispiel, wenn ich den folgenden URL-Aufruf mache:

Das wird funktionieren. Aber zum Testen und um es in Aktion zu sehen, habe ich Postman verwendet, eine Chrome-App-Erweiterung, die sehr nützlich ist.

So können Sie einen API-Aufruf mit dem Postman UX erstellen:

Building Your Startup - Postman API Requests

Und so sehen die Ergebnisse aus:

Building Your Startup - Postman API Results

Das ist nur eine einfache Möglichkeit, das rohe Ergebnis meines Entwicklungsservers zu sehen, auf dem alle meine Meetings angezeigt werden:

Das war es fürs Erste. Sie können die Version in der API-Struktur durchsuchen und viele andere Methoden anzeigen. Wenn ich die Sicherheit verbessere und die Funktionalität der API verbessere, werde ich versuchen, mehr darüber zu schreiben.

Vorausschauen

Ich hoffe, dir hat das heutige Tutorial gefallen. Offensichtlich wird die API wachsen und sich ändern, wenn unsere mobile Entwicklung voranschreitet. Wie ich bereits sagte, werde ich die Sicherheit erhöhen und die Funktionalität erweitern.

Wenn Sie es noch nicht getan haben, planen Sie jetzt Ihr erstes Meeting mit Meeting Planner!

Sie können mich auch erreichen @lookahead_io. Ich bin immer offen für neue Feature-Ideen und Themenvorschläge für zukünftige Tutorials. Oder probieren Sie unseren Helpdesk aus und öffnen Sie einen Fehlerbericht oder ein Feature-Anfrage-Ticket.

Bleiben Sie dran für all diese und weitere anstehende Tutorials, indem Sie die Building Your Startup With PHP-Serie ausprobieren.

verwandte Links

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.