According to StackOverflow’s 2022 survey, 46% of professional developers rate MySQL as the most popular database to use in the workspace. As programmers, we should not be bothered with repeatedly writing code which is otherwise readily available, robust, and well-tested.
Yet this problem remains persistent in the REST API space, despite the implementation process being by this point in time rote, repetitive, and prone to error and oversight. This oversight is costly for several reasons:
Fortunately for us programmers, the DreamFactory platform can easily absolve your team from all of these hassles and much more by offering a centralized solution for the API documentation, generation, and security. In this tutorial you’ll learn just how easy it is to build, secure, and deploy a REST API for your MySQL database.
Table of Contents
A MySQL API, is a set of functions, protocols, and tools that allow developers to interact with a MySQL database programmatically from their applications or scripts.
This API provides a way for applications to send queries to the MySQL database, retrieve data, modify data, and perform various database operations. It acts as an intermediary layer between the application code and the database server, facilitating seamless communication and data manipulation.
Common MySQL APIs include MySQL Connector/ODBC, MySQL Connector/J (for Java), MySQLi (for PHP), and many others, each tailored to specific programming languages or frameworks.
MySQL APIs play a pivotal role in software development by facilitating interaction between applications and MySQL databases.
These APIs act as ‘in betweens’, abstracting the complexities of database operations and providing a standardized interface for developers. Their significance lies in enabling applications to store, retrieve, modify, and manage data efficiently.
MySQL APIs offer compatibility with a diverse range of programming languages and frameworks, allowing developers to work with MySQL using their preferred tools. They enhance security by offering features like prepared statements and input validation to protect against common security vulnerabilities like SQL injection.
Performance optimization features like connection pooling and caching help improve database interaction efficiency. The portability afforded by MySQL APIs means that applications can potentially transition to different database systems without major code overhauls, while their scalability capabilities make them suitable for handling increased workloads.
MySQL APIs benefit from the extensive support of the MySQL developer community, ensuring a wealth of resources, libraries, and tools for developers.
DreamFactory can generate REST APIs for a multitude of databases, among them MySQL, Microsoft SQL Server, Oracle, PostgreSQL, and MongoDB.
To do so, you’ll login to the DreamFactory administration interface, navigate toServicesand then enter the service creation interface by clicking on theCreatebutton located to the left of the screen. From there you’ll select the MySQL service type by navigating toAPI Generation > Database, then selecting MySQL from our database options(see below screenshot).
Als nächstes werden Sie aufgefordert, einen Namen, eine Bezeichnung und eine Beschreibung anzugeben (siehe Screenshot unten). Die beiden letztgenannten werden nur zu Referenzzwecken innerhalb der Verwaltungsoberfläche verwendet. Der Namenswert ist jedoch besonders wichtig, da er, wie Sie gleich sehen werden, Teil der API-URL sein wird.
Klicken Sie abschließend auf die RegisterkarteKonfiguration. Hier werden Sie aufgefordert, die Anmeldeinformationen für die Datenbankverbindung anzugeben (siehe Screenshot unten). Das sollte eigentlich nichts Neues sein; Sie geben einen Hostnamen, einen Benutzernamen, ein Passwort und eine Datenbank an. Darüber hinaus können Sie optional weitere Konfigurationsmerkmale wie Treiberoptionen, Zeitzone und Caching-Einstellungen angeben. Für dieses Tutorial werde ich mich auf die erforderlichen Felder beschränken und die optionalen Funktionen unberührt lassen.
Wenn die Anmeldeinformationen vorhanden sind, klicken Sie einfach auf die Schaltfläche „Speichern“ unten auf dem Bildschirm und schon wurde die REST-API generiert!
Zusammen mit der API generiert DreamFactory automatisch einen umfangreichen Satz interaktiver Swagger-Dokumentation für Ihre API. Sie können darauf zugreifen, indem Sie oben in der Verwaltungsoberfläche auf die Registerkarte „API-Dokumente“ klicken und dann den neu generierten Dienst nach Namen auswählen. Ihnen werden 44 Endpunkte angezeigt, die zum Ausführen gespeicherter Prozeduren, zum Durchführen von CRUD-Vorgängen, zum Abfragen von Ansichten und vielem mehr nützlich sind. Der folgende Screenshot zeigt beispielsweise nur eine kleine Teilmenge der neu generierten MySQL-REST-API-Endpunkte!
Alle von DreamFactory generierten APIs werden automatisch (mindestens) durch einen API-Schlüssel geschützt. Sie können Benutzer optional mithilfe der Basisauthentifizierung, SSO oder Verzeichnisdienste (LDAP und Active Directory) authentifizieren. Darüber hinaus können Sie jedem API-Schlüssel und/oder Benutzer eine *Rolle* zuordnen, die genau bestimmt, auf welche Dienste der Benutzer zugreifen darf. Darüber hinaus können Sie Interaktionen auf eine bestimmte Datenbanktabelle oder einen Satz von Tabellen, einen oder mehrere bestimmte Endpunkte beschränken und sogar einschränken, welche HTTP-Methoden zulässig sind.
Der Schutz der Benutzer, die für die Interaktion mit der MySQL-Datenbank im Namen Ihrer APIs verantwortlich sind, ist ein unglaublich wichtiger Teil des API-Entwicklungs- und Integrationsprozesses. Sehen Sie sich unsere anderen Empfehlungen zu verbesserter Datensicherheit mit MySQL-Privilegien und DreamFactory an
Als Beispiel erstellen wir eine neue Rolle, die den zugehörigen API-Schlüssel auf die schreibgeschützte Interaktion mit einer einzelnen Tabelle innerhalb der neu erstellten MySQL-API beschränkt. Navigieren Sie dazu zur Registerkarte „Rollen“ und klicken Sie auf die Schaltfläche „Erstellen“. Ihnen wird die im folgenden Screenshot gezeigte Benutzeroberfläche angezeigt.
Klicken Sie als Nächstes auf die Registerkarte „Zugriff“. Hier definieren Sie, was die Rolle tun kann. Im folgenden Screenshot sehen Sie, dass ich die Rolle auf die Interaktion mit dem MySQL-Dienst beschränkt habe und innerhalb dieses Dienstes die Rolle nur mit dem Endpunkt_table/employees*über die GET-Methode interagieren kann. Wir sind im Lockdown, Baby!
Speichern Sie die Rolle, indem Sie auf die SchaltflächeSpeichernklicken. Jetzt erstellen wir einen neuen API-Schlüssel und verknüpfen den Schlüssel mit dieser Rolle. Klicken Sie dazu auf die Registerkarte „API-Schlüssel“ unter der Dropdown-Liste „API-Typen“, wählen Sie „API-Schlüssel“ aus und klicken Sie dann auf die Schaltfläche „+“. Weisen Sie Ihrer neuen App einen Namen und eine Beschreibung zu, stellen Sie sicher, dass sie auf „Aktiv“ eingestellt ist, und weisen Sie ihr dann die Standardrolle „MySQL“ zu, so wie ich es im folgenden Screenshot getan habe. Was die Einstellung „App-Standort“ betrifft, sollten Sie „Kein Speicher erforderlich“ auswählen, wenn Sie planen, über eine Web- oder Mobilanwendung oder über einen anderen Webdienst mit der API zu interagieren.
Drücken Sie die Schaltfläche „Speichern“ und Sie kehren zum Apps-Indexbildschirm zurück, wo der neue API-Schlüssel kopiert werden kann! Kopieren Sie den Schlüssel zur späteren Bezugnahme in eine Textdatei.
Wir müssen noch einen letzten Konfigurationsschritt durchführen, bevor wir die API von außerhalb der DreamFactory-Verwaltungsoberfläche testen können. Sie müssen CORS (Cross-Origin Resource Sharing) für die neue API aktivieren. Sie finden es im Dropdown-Menü „Konfiguration“ und wählen Sie „CORS“ aus. Zu Demonstrationszwecken können Sie die standardmäßige CORS-Einstellung festlegen, wie ich es im folgenden Screenshot getan habe, wodurch API-beschränkter Datenverkehr von allen Netzwerkadressen zugelassen wird:
Sobald die API generiert, der API-Schlüssel und die zugehörige Rolle erstellt und CORS konfiguriert sind, können Sie mit der Interaktion mit der API über einen Client beginnen! Ich verwende Insomnia gerne für HTTP-Tests unter MacOS, eine andere beliebte Lösung ist jedoch Postman.
Im folgenden Screenshot verwende ich Insomnia, um den Endpunkt/api/v2/_table/employeesüber eine GET-Anfrage zu kontaktieren.
Denken Sie daran, dass wir diesen API-Schlüssel so gesperrt haben, dass er nur mit den Endpunkten/api/v2/_table/employees/*über die GET-Methode interagiert. Was passiert also, wenn wir versuchen, an diese Tabelle zu posten? Es wird der Statuscode 401 (Nicht autorisiert) zurückgegeben, wie im folgenden Screenshot dargestellt:
Offensichtlich ist DreamFactory nicht die einzige verfügbare Lösung. Eine andere Möglichkeit, eine MySQL-REST-API zu erstellen, besteht darin, sie manuell von Hand zu codieren. Dies dauert jedoch erheblich länger und ist schwieriger. Bei der manuellen Erstellung einer API gibt es auch andere Bedenken, die man berücksichtigen muss, beispielsweise die API-Sicherheit. Hier sind ein paar kurze Tipps, wie Sie mit der manuellen Codierung Ihrer nächsten API beginnen können.
Der erste Schritt zum Aufbau einer MySQL-REST-API besteht darin, einen Webserver wie Apache oder Nginx einzurichten, der eingehende HTTP-Anfragen von Clients verarbeitet und mit entsprechenden Inhalten antwortet. Sie müssen außerdem PHP auf dem Server installieren, eine serverseitige Skriptsprache, die mit MySQL interagieren kann, um Daten abzurufen oder zu speichern. Schließlich müssen Sie MySQL installieren, ein relationales Datenbankverwaltungssystem, das Daten in Tabellen speichern und verwalten kann. Sobald Sie alle diese Komponenten eingerichtet haben, können Sie mit dem Aufbau der REST-API beginnen.
Eine Datenbank ist eine Sammlung zusammengehöriger Daten, die strukturiert organisiert sind, beispielsweise in Tabellen mit Spalten und Zeilen. MySQL ist ein beliebtes relationales Datenbankverwaltungssystem, mit dem Sie Datenbanken und Tabellen erstellen und verwalten können.
Um eine Datenbank in MySQL zu erstellen, können Sie den Befehl CREATE DATABASE in der MySQL-Befehlszeilenschnittstelle oder ein Tool wie phpMyAdmin verwenden.
Um von PHP aus eine Verbindung zur MySQL-Datenbank herzustellen, können Sie eine von mehreren Erweiterungen wie MySQLi oder PDO verwenden. Sobald Sie eine Verbindung hergestellt haben, können Sie SQL-Abfragen ausführen, um Daten aus der Datenbank abzurufen. Die SQL-Abfragen sollten so konzipiert sein, dass sie die Daten abrufen, die Sie über die API verfügbar machen möchten, und sollten parametrisiert sein, um SQL-Injection-Angriffe zu verhindern.
Sobald Sie die Daten aus der Datenbank abgerufen haben, können Sie sie mit den integrierten PHP-Funktionen als JSON formatieren. JSON ist ein leichtes Datenformat, das leicht zu analysieren ist und von vielen Programmiersprachen unterstützt wird.
PDO ist eine leistungsstarke und flexible Erweiterung, die eine konsistente Schnittstelle für den Zugriff auf Datenbanken in PHP bietet. PDO kann mit einer Vielzahl von Datenbanktreibern, einschließlich MySQL, verwendet werden und bietet Funktionen wie vorbereitete Anweisungen und Parameterbindung, die dabei helfen können, SQL-Injection-Angriffe zu verhindern.
Um PDO mit MySQL zu verwenden, müssen Sie ein neues PDO-Objekt erstellen und die Verbindungsdetails für Ihre Datenbank übergeben. Anschließend können Sie eine SQL-Anweisung mit der Methode „prepare()“ vorbereiten, beliebige Parameter mit den Methoden „bindParam()“ oder „bindValue()“ binden und die Anweisung mit der Methode „execute()“ ausführen. Schließlich können Sie die Ergebnisse der Abfrage mit Methoden wie fetch(), fetchAll() oder fetchColumn() abrufen.
Die Funktion json_encode() ist eine integrierte PHP-Funktion, mit der Daten in eine JSON-formatierte Zeichenfolge konvertiert werden können. Sie können der Funktion einen beliebigen Datentyp übergeben, z. B. ein Array oder ein Objekt, und dieser wird in eine JSON-Zeichenfolge konvertiert, die problemlos von Clientanwendungen verwendet werden kann.
Sobald Sie die JSON-formatierte Zeichenfolge haben, müssen Sie sie mit den entsprechenden HTTP-Headern an den Client ausgeben. In PHP können Sie die Header mithilfe der Funktion header() festlegen, mit der Sie den Inhaltstyp und andere Metadaten zur Antwort angeben können. Um beispielsweise JSON-Daten auszugeben, können Sie den Content-Type-Header auf „application/json“ setzen.
Durch die Ausgabe der Daten im JSON-Format und das Festlegen der entsprechenden HTTP-Header können Sie sicherstellen, dass Ihre REST-API problemlos von Clientanwendungen genutzt werden kann und den Standard-Webkonventionen entspricht.
HTTP-Anfragen sind die Art und Weise, wie Clients (z. B. Webbrowser oder mobile Apps) mit Ihrer API kommunizieren, um Daten anzufordern oder andere Aktionen auszuführen. Um diese Anfragen zu bearbeiten, müssen Sie PHP-Code schreiben, der die Anfrage verarbeiten und eine entsprechende Antwort zurückgeben kann.
PHP bietet mehrere Funktionen, mit denen auf Informationen zur aktuellen Anfrage zugegriffen werden kann, z. B. $_SERVER, $_GET, $_POST und $_REQUEST. Diese Variablen enthalten Informationen wie die HTTP-Methode (z. B. GET oder POST), den URL-Pfad und alle Abfrageparameter oder Anforderungskörperdaten.
Um verschiedene Arten von Anfragen zu bearbeiten, müssen Sie PHP-Code schreiben, der die eingehenden Daten analysieren und bestimmen kann, welche Maßnahmen ergriffen werden müssen. Wenn der Client beispielsweise eine GET-Anfrage stellt, um Daten von der API abzurufen, führt Ihr Code möglicherweise eine SQL-Abfrage aus, um die Daten abzurufen und sie als JSON-Antwort zurückzugeben. Wenn der Client eine POST-Anfrage zum Erstellen eines neuen Datensatzes stellt, fügt Ihr Code möglicherweise die neuen Daten in die MySQL-Datenbank ein und gibt eine Erfolgsmeldung zurück.
Um die Fehlerbehandlung und -validierung in Ihrer API zu implementieren, müssen Sie PHP-Code schreiben, der Fehler erkennen und darauf reagieren sowie Benutzereingaben validieren kann. PHP bietet mehrere integrierte Funktionen, die zur Fehlerbehandlung verwendet werden können, wie zum Beispiel trigger_error() oder set_error_handler(). Zur Validierung möchten Sie möglicherweise reguläre Ausdrücke, PHP-Filter oder benutzerdefinierte Validierungsfunktionen verwenden.
Um Ihre API bereitzustellen, müssen Sie die PHP-Dateien und alle anderen erforderlichen Dateien (wie CSS, JavaScript oder Bilder) auf Ihren Webserver hochladen. Abhängig von Ihrer Webserverkonfiguration müssen Sie möglicherweise Ihre .htaccess-Datei ändern, um sicherzustellen, dass die API korrekt weitergeleitet wird.
Sobald Ihre API bereitgestellt ist, können Sie sie mit Tools wie cURL oder Postman testen. Mit diesen Tools können Sie HTTP-Anfragen an Ihre API senden und die Antwortdaten überprüfen. Mit diesen Tools können Sie verschiedene Arten von Anforderungen testen (z. B. GET, POST, PUT oder DELETE), die Fehlerbehandlung und -validierung testen und sicherstellen, dass die API die richtigen Daten im richtigen Format (z. B. JSON oder XML) zurückgibt ).
Beim Testen Ihrer API ist es wichtig, auf Leistung, Sicherheit und Benutzerfreundlichkeit zu achten. Sie sollten Ihre API unter verschiedenen Bedingungen testen (z. B. hohem Datenverkehr oder langsamen Netzwerkverbindungen), um sicherzustellen, dass sie gut funktioniert und stabil bleibt. Sie sollten Ihre API auch auf Sicherheitslücken testen (z. B. SQL-Injection oder Cross-Site-Scripting) und sicherstellen, dass sie für Kunden einfach zu verwenden und zu verstehen ist.
Hier ist ein Beispiel-PHP-Code für eine einfache REST-API, die Daten aus einer MySQL-Datenbank abruft:
Ob Sie es glauben oder nicht, wir haben nur an der Oberfläche gekratzt, was DreamFactory für Sie tun kann. Wenn Sie unsere SQL Server-, Oracle- oder MongoDB-Konnektoren in Aktion sehen oder sehen möchten, wie einfach es ist, einen SOAP-Dienst in REST zu konvertieren, ohne Code zu schreiben, vereinbaren Sie doch einen Termin mit unserem Engineering-Team! Besuchen Sie https://www.dreamfactory.com/products und vereinbaren Sie noch heute eine Demo!
Andere Datenbanken, die DreamFactory unterstützt:
Der Beitrag „So erstellen Sie eine MySQL-REST-API in 6 einfachen Schritten“ erschien zuerst im DreamFactory Software-Blog.
The above is the detailed content of How to Create a MySQL REST API in asy Steps. For more information, please follow other related articles on the PHP Chinese website!