REST
.htaccess
Servereinstellungen per .htaccess @ jweiland.net
# Allow/Deny
Order Allow,Deny
Allow from all
Deny from 10.1.0.0/255.255.0.0
Deny from 24.10.15.25
# Enable rewrite engine and route requests to framework
RewriteEngine On
# Some servers require you to specify the `RewriteBase` directive
# In such cases, it should be the path (relative to the document root)
# containing this .htaccess file
#
# RewriteBase /
RewriteRule ^(tmp)\/|\.ini$ - [R=404]
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L,QSA]
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
# ErrorDocument
ErrorDocument 403 /forbidden.html
ErrorDocument 404 /notfound.html
ErrorDocument 500 /servererror.html
# Redirect old-page >> new-page
Redirect 301 https://yourwebsite.com/old-page https://yourwebsite.com/new-page
Hinweis: Zeile 8 bis 23 ... wesentliche Teil, die Umleitung der Anfragen auf index.php
📋 REST API für Benutzer und Produkte
Implementiere eine einfache REST-API,
die JSON-Antworten liefert und die bereitgestellte sendJsonResponse Funktion nutzt.
function sendJsonResponse($data, $statusCode = 200) {
header('Content-Type: application/json');
http_response_code($statusCode);
echo json_encode($data);
exit();
}
Verwende $_SERVER['REQUEST_METHOD'] und $_SERVER['REQUEST_URI'] zum Auslesen der Request-Informationen und nutze file_get_contents('php://input') und json_decode() zum Parsen des JSON-Request-Bodies für POST-Anfragen.
Endpunkte und Methoden:
GET /users gibt eine Liste simulierter Benutzerdaten zurück.
GET /users/{id} gibt die Daten eines spezifischen Benutzers zurück.
POST /users erstellt einen neuen Benutzer aus dem JSON-Request-Body (201 User Created).
PUT /users/{id} aktualisiert die Daten eines spezifischen Benutzers aus dem JSON-Request-Body.
DELETE /users/{id} entfernt einen spezifischen Benutzer.
GET /products gibt eine Liste simulierter Produktdaten zurück
GET /products/{id} gibt die Daten eines spezifischen Produkts zurück
POST /products erstellt ein neues Produkt aus dem JSON-Request-Body (201 Product Created)
PUT /products/{id} aktualisiert die Daten eines spezifischen Produkts aus dem JSON-Request-Body
DELETE /products/{id} entfernt ein spezifisches Produkt
Für PUT und DELETE soll die ID aus dem URI-Pfad extrahiert und verwendet werden (z.B. /users/123).
Fehlerbehandlung:
Für alle nicht definierten Endpunkte (Ressourcen) soll die API mit einem passenden HTTP-Statuscode und einer entsprechende JSON-Fehlermeldung antworten:
405 Method Not Allowed für nicht unterstützte Methoden an den Endpunkten.
404 Not Found für unbekannte Endpunkte oder nicht gefundene Ressourcen (bei GET, PUT, DELETE mit ID).
zum Testen von Rest-APIs:
Visual Studio Code mit Plugin Thunder Client