Wie man in 30 Minuten eine REST API in PHP schreibt
Das Erstellen einer eigenen REST API gehört zu den Schlüsselkompetenzen eines modernen Backend-Entwicklers. Viele Anfänger denken, dass dafür schwere Frameworks wie Laravel oder Symfony nötig sind. Tatsächlich kann man eine einfache REST API in reinem PHP buchstäblich in einer halben Stunde schreiben. In diesem Artikel gehen wir Schritt für Schritt durch den Prozess der Erstellung eines RESTful-Dienstes, der sofort in realen Projekten eingesetzt werden kann – von mobilen Apps bis hin zu Single-Page-Websites.
Wir werden keine externen Bibliotheken verwenden. Der gesamte Code wird in Vanilla PHP geschrieben. Sie lernen, wie man HTTP-Anfragen verarbeitet, mit JSON arbeitet, Routing organisiert und die richtigen HTTP-Statuscodes zurückgibt. Los geht's!
1. Projektstruktur und Vorbereitung
Bevor wir Code schreiben, erstellen wir eine einfache Dateistruktur. Für unsere API werden nur wenige Dateien benötigt:
index.php– der Einstiegspunkt, der alle Anfragen verarbeitet;.htaccess– zur Weiterleitung aller Anfragen an die index.php (falls Sie Apache verwenden);config.php– eine Datei mit den Einstellungen für die Datenbankverbindung (optional).
Erstellen Sie einen Projektordner, z. B. my-rest-api, und legen Sie diese Dateien dort ab.
.htaccess einrichten
Damit alle Anfragen in unser Hauptskript gelangen, erstellen Sie eine Datei .htaccess im Projektstammverzeichnis:
RewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^(.*)$ index.php [QSA,L]Dieser Code leitet alle Anfragen, die nicht auf reale Dateien oder Ordner verweisen, an index.php weiter. Der Parameter QSA erhält die Query-String-Parameter.
2. Routing und Anfrageverarbeitung
Jetzt schreiben wir die Hauptdatei – index.php. Sie nimmt die Anfrage entgegen, ermittelt die HTTP-Methode (GET, POST, PUT, DELETE) und den Pfad und ruft dann den entsprechenden Handler auf.
Basis-Routing
Beginnen wir mit einem einfachen Beispiel. Wir erstellen ein Array von Routen und eine Funktion zu deren Verarbeitung:
<?phpheader('Content-Type: application/json');header('Access-Control-Allow-Origin: *');header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');header('Access-Control-Allow-Headers: Content-Type');
$method = $_SERVER['REQUEST_METHOD'];$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
// Schrägstrich am Ende entfernen$path = rtrim($path, '/');
// Einfaches Routingswitch (true) { case $path === '/api/users' && $method === 'GET': getUsers(); break; case $path === '/api/users' && $method === 'POST': createUser(); break; case preg_match('/^\\/api\\/users\\/(\\d+)$/', $path, $matches) && $method === 'GET': getUser($matches[1]); break; default: http_response_code(404); echo json_encode(['error' => 'Route not found']); break;}
function getUsers() { // Platzhalter echo json_encode(['users' => ['Alice', 'Bob', 'Charlie']]);}
function getUser($id) { echo json_encode(['user' => ['id' => $id, 'name' => 'User ' . $id]]);}
function createUser() { $input = json_decode(file_get_contents('php://input'), true); echo json_encode(['message' => 'User created', 'data' => $input]);}?>Beachten Sie einige wichtige Punkte:
- Wir setzen den Header
Content-Type: application/json– alle Antworten erfolgen im JSON-Format. - CORS-Header erlauben Anfragen von jeder Domain (für die Entwicklung).
- Der Body von POST/PUT-Anfragen wird über
php://inputgelesen.
3. Arbeiten mit der Datenbank
Eine echte API arbeitet selten mit Platzhaltern. Fügen wir eine MySQL-Verbindung über PDO hinzu. Erstellen Sie die Datei config.php:
<?phpdefine('DB_HOST', 'localhost');define(
```