REST API Erstellen Anleitung
REST API erstellen: Komplette Anleitung für Einsteiger
Eine REST API ermöglicht die Kommunikation zwischen verschiedenen Systemen. In dieser Anleitung zeigen wir, wie Sie eine eigene REST API mit PHP erstellen – von den Grundlagen bis zur Authentifizierung.
Was ist eine REST API?
REST (Representational State Transfer) ist ein Architekturstil für Schnittstellen. Eine REST API ermöglicht es, Daten zwischen Client und Server über HTTP auszutauschen.
Die wichtigsten HTTP-Methoden
| Methode | Zweck | Beispiel |
|---|---|---|
| GET | Daten abrufen | Alle Benutzer laden |
| POST | Neue Daten erstellen | Neuen Benutzer anlegen |
| PUT | Daten aktualisieren | Benutzer bearbeiten |
| DELETE | Daten löschen | Benutzer entfernen |
Grundstruktur einer REST API
1. Projekt-Struktur
/api ├── index.php (Router) ├── config.php (Datenbank-Config) ├── users.php (User-Endpoints) └── .htaccess (URL-Rewriting)
2. Einfacher Router (index.php)
<?php
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE");
$method = $_SERVER['REQUEST_METHOD'];
$path = $_GET['path'] ?? '';
switch($path) {
case 'users':
require 'users.php';
break;
default:
http_response_code(404);
echo json_encode(["error" => "Endpoint nicht gefunden"]);
}
?>
3. User-Endpoint (users.php)
<?php
require 'config.php';
switch($method) {
case 'GET':
// Alle User abrufen
$stmt = $pdo->query("SELECT id, name, email FROM users");
echo json_encode($stmt->fetchAll(PDO::FETCH_ASSOC));
break;
case 'POST':
// Neuen User erstellen
$data = json_decode(file_get_contents("php://input"), true);
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->execute([$data['name'], $data['email']]);
echo json_encode(["id" => $pdo->lastInsertId()]);
break;
case 'DELETE':
// User löschen
$id = $_GET['id'] ?? null;
$stmt = $pdo->prepare("DELETE FROM users WHERE id = ?");
$stmt->execute([$id]);
echo json_encode(["success" => true]);
break;
}
?>
URL-Rewriting mit .htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?path=$1 [QSA,L]
Damit wird aus /api/users automatisch /api/index.php?path=users.
Authentifizierung mit API-Key
<?php
function checkApiKey() {
$headers = getallheaders();
$apiKey = $headers['X-API-Key'] ?? '';
if ($apiKey !== 'DEIN_GEHEIMER_KEY') {
http_response_code(401);
echo json_encode(["error" => "Ungültiger API-Key"]);
exit;
}
}
// Am Anfang jedes Endpoints aufrufen
checkApiKey();
?>
HTTP Status Codes
| Code | Bedeutung | Wann verwenden |
|---|---|---|
| 200 | OK | Erfolgreiche Anfrage |
| 201 | Created | Ressource erstellt (POST) |
| 400 | Bad Request | Ungültige Anfrage |
| 401 | Unauthorized | Nicht authentifiziert |
| 404 | Not Found | Ressource nicht gefunden |
| 500 | Server Error | Interner Fehler |
Best Practices
- Versionierung:
/api/v1/usersfür spätere Updates - JSON verwenden: Standard für moderne APIs
- HTTPS: Immer verschlüsselt übertragen
- Rate Limiting: Anfragen pro Minute begrenzen
- Dokumentation: Alle Endpoints dokumentieren