Junior
Was ist REST?
sobes.tech KI
Antwort von AI
REST (Representational State Transfer) ist ein Architekturstil zum Aufbau verteilter Systeme, der hauptsächlich bei der Gestaltung von Webdiensten verwendet wird. Es basiert auf einer Reihe von Prinzipien und Einschränkungen, die definieren, wie Webressourcen miteinander interagieren.
Schlüsselprinzipien von REST:
- Client-Server: Klare Trennung der Verantwortlichkeiten zwischen Client und Server.
- Zustandslos (stateless): Der Server speichert keine Informationen über den Zustand des Clients zwischen den Anfragen. Jede Anfrage enthält alle notwendigen Informationen für die Verarbeitung.
- Cachefähig: Clients können Serverantworten zwischenspeichern, um die Leistung zu verbessern. Der Server gibt explizit an, ob die Antwort zwischengespeichert werden darf.
- Schichtensystem: Der Client kann mit einer Zwischenebene (z.B. Proxy, Load Balancer) interagieren, ohne es zu wissen.
- Code on Demand (optional): Der Server kann ausführbaren Code an den Client übertragen (z.B. JavaScript), um die Funktionalität des Clients zu erweitern.
- Einheitliche Schnittstelle: Das wichtigste Prinzip, das folgende Einschränkungen umfasst:
- Ressourcenidentifikation (URI).
- Manipulation von Ressourcen durch Repräsentationen (Datenaustausch in einem bestimmten Format, z.B. JSON, XML).
- Selbstbeschreibende Nachrichten (Nachrichten enthalten alle notwendigen Informationen für ihr Verständnis).
- HATEOAS (Hypermedia as the Engine of Application State): Der Client navigiert zwischen Anwendungszuständen unter Verwendung von Hyperlinks, die in den Serverantworten enthalten sind.
RESTful API ist eine Implementierung des REST-Stils für Webdienste, die Standard-HTTP-Methoden (GET, POST, PUT, DELETE) zur Arbeit mit Ressourcen verwendet.
// Beispiel für die Verwendung von HTTP-Methoden in RESTful API
// Ressource abrufen
// GET /api/products/1
// Ressource erstellen
// POST /api/products
// Body: { "name": "Neues Produkt", "price": 10.50 }
// Ressource aktualisieren
// PUT /api/products/1
// Body: { "name": "Aktualisiertes Produkt", "price": 11.00 }
// Ressource löschen
// DELETE /api/products/1