Lektion 04 - JSON API
Eine einfache Daten-API mit PHP bauen
Eine API gibt Daten in einem Format zurueck, das andere Programme lesen koennen. Sehr oft ist dieses Format JSON. In dieser Lektion erzeugst du JSON-Antworten mit PHP.
1. Was ist ein API-Endpunkt?
Ein Endpunkt ist eine URL, die eine bestimmte API-Funktion ausloest. Zum Beispiel:
GET http://localhost/api/users.php
GET http://localhost/api/courses.php
GET http://localhost/api/tasks.php?status=open
Ein Endpunkt sollte eine klare Aufgabe haben: User liefern, Kurse liefern, Aufgaben filtern oder einen Datensatz speichern.
2. JSON ausgeben
<?php
header('Content-Type: application/json; charset=utf-8');
$data = [
'name' => 'Mina',
'points' => 80,
'isActive' => true,
];
echo json_encode($data);
?>
header sagt dem Browser: Diese Antwort ist JSON.
json_encode wandelt ein PHP-Array in JSON-Text um.
3. Liste als JSON ausgeben
<?php
header('Content-Type: application/json; charset=utf-8');
$courses = [
[
'id' => 1,
'title' => 'PHP Einstieg',
],
[
'id' => 2,
'title' => 'SQL Grundlagen',
],
];
echo json_encode($courses);
?>
4. API-Antwort mit Status
Gute APIs geben nicht nur Daten zurueck, sondern auch Informationen ueber Erfolg oder Fehler.
<?php
header('Content-Type: application/json; charset=utf-8');
$response = [
'success' => true,
'data' => [
'id' => 1,
'title' => 'PHP Einstieg',
],
'message' => 'Kurs geladen',
];
echo json_encode($response);
?>
5. Fehlerantworten
<?php
header('Content-Type: application/json; charset=utf-8');
$id = $_GET['id'] ?? null;
if ($id === null) {
http_response_code(400);
echo json_encode([
'success' => false,
'message' => 'Parameter id fehlt',
]);
exit;
}
echo json_encode([
'success' => true,
'id' => (int) $id,
]);
?>
http_response_code(400) bedeutet: Die Anfrage war fehlerhaft.
exit beendet das Skript nach der Fehlerantwort.
6. Lebenszyklus einer API-Anfrage
1. Anfrage empfangen
2. Methode und Parameter lesen
3. Eingaben validieren
4. Daten vorbereiten oder aus Datenbank laden
5. Antwort als Array bauen
6. JSON-Header setzen
7. Array mit json_encode ausgeben
7. Uebungen
- Erstelle
api-user.php, das einen User als JSON ausgibt. - Erstelle
api-courses.php, das drei Kurse als JSON-Liste ausgibt. - Baue eine Antwort mit
success,dataundmessage. - Wenn der GET-Parameter
idfehlt, gib Statuscode400zurueck. - Wandle eine ID mit
(int)in eine Zahl um. - Erklaere, warum APIs meistens JSON statt HTML ausgeben.