PHP Kurs Naechste Lektion

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

  1. Erstelle api-user.php, das einen User als JSON ausgibt.
  2. Erstelle api-courses.php, das drei Kurse als JSON-Liste ausgibt.
  3. Baue eine Antwort mit success, data und message.
  4. Wenn der GET-Parameter id fehlt, gib Statuscode 400 zurueck.
  5. Wandle eine ID mit (int) in eine Zahl um.
  6. Erklaere, warum APIs meistens JSON statt HTML ausgeben.
Weiter zur Datenbank-API