Wie man in 30 Minuten eine REST API in PHP schreibt: Schritt-für-Schritt-Anleitung

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Wie man in 30 Minuten eine REST API in PHP schreibt



REST API (Representational State Transfer) ist ein Architekturstil für die Interaktion von Komponenten einer verteilten Anwendung im Netzwerk. In der modernen Webentwicklung ist REST API der Standard für die Erstellung von Backends für mobile Apps, SPA (Single Page Application) und Microservices. In diesem Artikel zeigen wir, wie man in nur 30 Minuten eine einfache, aber voll funktionsfähige REST API in PHP schreibt.



Wir erstellen eine API zur Verwaltung einer Aufgabenliste (Todo List) mit Unterstützung für CRUD-Operationen (Create, Read, Update, Delete). Sie lernen, wie Sie Routing organisieren, JSON-Anfragen verarbeiten und eine MySQL-Datenbank anbinden.



Vorbereitung der Umgebung



Für die Arbeit benötigen Sie:

  • Webserver Apache oder Nginx mit PHP 7.4+ Unterstützung
  • MySQL oder MariaDB
  • Code-Editor (VS Code, PhpStorm)
  • Postman oder curl zum Testen der API


Erstellen Sie die Projektstruktur:

todo-api/├── index.php          # Einstiegspunkt (Router)├── config.php         # Datenbankverbindungseinstellungen├── api/│   └── tasks.php      # Logik für Aufgabenverwaltung└── .htaccess          # URL-Rewrite-Einstellungen


Schritt 1: .htaccess und Einstiegspunkt einrichten



Erstellen Sie die Datei .htaccess zur Weiterleitung aller Anfragen an index.php:

RewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^(.*)$ index.php?url=$1 [QSA,L]


Jetzt erstellen wir index.php – unseren Hauptrouter:

<?phpheader("Content-Type: application/json; charset=UTF-8");header("Access-Control-Allow-Origin: *");header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");header("Access-Control-Allow-Headers: Content-Type, Authorization");

// Verarbeitung von Preflight-Anfragenif ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { http_response_code(200); exit();}

require_once 'config.php';require_once 'api/tasks.php';

$url = isset($_GET['url']) ? rtrim($_GET['url'], '/') : '';$urlParts = explode('/', $url);$resource = $urlParts[0] ?? '';$id = $urlParts[1] ?? null;

switch ($resource) { case 'tasks': $tasks = new Tasks(); echo $tasks->handleRequest($_SERVER['REQUEST_METHOD'], $id); break; default: http_response_code(404); echo json_encode(["message" => "Resource not found"]); break;}?>


Schritt 2: Datenbankverbindung



Erstellen Sie config.php mit den Verbindungseinstellungen:

<?phpclass Database {    private $host = "localhost";    private $db_name = "todo_api";    private $username = "root";    private $password = "";    public $conn;

public function getConnection() { $this->conn = null; try { $this->conn = new PDO( "mysql:host=" . $this->host . ";dbname=" . $this->db_name, $this->username, $this->password ); $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { http_response_code(500); echo json_encode(["message" => "Database connection error"]); exit(); } return $this->conn; }}?>


Erstellen Sie die Tabelle in MySQL:

CREATE DATABASE todo_api;USE todo_api;

CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, description TEXT, status ENUM('pending', 'completed') DEFAULT 'pending', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);


Schritt 3: Implementierung der CRUD-Operationen



Erstellen Sie die Datei api/tasks.php mit der Hauptlogik:

Blogs

Buchempfehlungen