40 häufig gestellte Fragen und Antworten zu REST-API-Interviews (2023)

Inhaltsverzeichnis

Eine API, kurz für Application Programming Interface, fungiert als Schnittstelle, die es Anwendungen ermöglicht, auf spezifische Ressourcen anderer Anwendungen zuzugreifen. Sie dient als eine Art Tor, das den kontrollierten Datenaustausch ermöglicht.

Ein wesentlicher Vorteil der Nutzung einer API ist die Ermöglichung des Zugriffs durch Drittanwendungen, ohne dass diese auf alle Daten Ihrer Anwendung zugreifen können. Sie steuern präzise, welche Daten über Ihre API offengelegt werden und somit zugänglich sind.

Die Anwendung oder der Benutzer, der Daten anfordert, wird als Client bezeichnet, während die Anwendung, die diese Daten bereitstellt, als Server agiert. Dieses Client-Server-Modell ist grundlegend für die Funktionsweise von APIs.

APIs sind heutzutage ein integraler Bestandteil jeder Softwarearchitektur. Egal, ob Sie sich für eine Position im Frontend-, Backend-, Full-Stack- oder Netzwerk-Engineering-Bereich bewerben, werden Sie wahrscheinlich auf Fragen zu APIs stoßen.

Vor diesem Hintergrund wollen wir uns einige der häufigsten Fragen ansehen, die in Bewerbungsgesprächen zu REST-APIs gestellt werden.

Was ist REST?

Antwort: REST, kurz für Representational State Transfer, ist ein Architekturstil, der bestimmte Richtlinien für die Gestaltung von APIs vorgibt. APIs, die diesen Prinzipien folgen, werden als RESTful-APIs bezeichnet.

Es handelt sich dabei nicht um ein Protokoll oder einen Standard, sondern um eine Architektur, die auf verschiedene Arten implementiert werden kann und Entwicklern Flexibilität und Gestaltungsspielraum bietet. Daher ist REST eine beliebte Wahl für die API-Entwicklung. Einige der Grundprinzipien einer REST-Architektur umfassen:

  • Trennung von Client und Server: Ein Client sollte einen Server lediglich durch Anfragen über einen URI (Uniform Resource Identifier) beeinflussen. Der Server sollte den Zustand des Clients nicht verändern.
  • Zustandslosigkeit: Jede Anfrage ist unabhängig und kennt keine vorherigen Anfragen. Nach ihrer Erledigung wird die Anfrage abgeschlossen, ohne einen Zustand zu speichern.
  • Schichtenarchitektur: Weder Client noch Server wissen, ob die Anfrage direkt an den Ursprung oder über eine Zwischenanwendung weitergeleitet wird. Sie kümmern sich lediglich um die korrekte Antwort.
  • Caching: Daten und Antworten können sowohl client- als auch serverseitig zwischengespeichert werden, um die Performance und Skalierbarkeit zu erhöhen.

Was sind einige Hauptmerkmale von REST?

Antwort: Zu den wichtigsten Merkmalen von REST gehören:

  • Flexibilität: Ein Serverwechsel hat keinen Einfluss, da die API auf eine bestimmte Anfrage stets die gleiche Antwort liefert. Es können auch beliebig viele Endpunkte für verschiedene Datentypen hinzugefügt werden.
  • Skalierbarkeit: Caching optimiert die Skalierbarkeit, da Antworten für die spätere Nutzung gespeichert werden. Dies entlastet den Server und reduziert die Latenz.
  • Autorisierung: Mit Hilfe eines Autorisierungs-Headers können Anmeldeinformationen für die Autorisierung der Anfrage durch den Server übermittelt werden.
  • Zustandslosigkeit: Dieses Kernmerkmal verhindert, dass Anfragen Informationen über andere Anfragen haben. Jede Anfrage wird isoliert behandelt und nach Erledigung abgeschlossen.

Was sind Ressourcen in einer REST-Architektur?

Antwort: Ressourcen sind die grundlegenden Elemente in REST, auf denen Operationen wie Abrufen, Aktualisieren oder Löschen ausgeführt werden können. Sie sind die Bausteine einer REST-Architektur.

In einem E-Commerce-Shop wären beispielsweise Produkte, Benutzer und Metadaten Ressourcen, die über die API an andere Anwendungen übermittelt und bearbeitet werden können.

Nennen Sie einige Vor- und Nachteile einer REST-API.

Antwort: Die Vorteile von REST-APIs sind:

  • Einfache Implementierung.
  • Einfache Ressourcenverwaltung.
  • Skalierbarkeit aufgrund der Client-Server-Architektur.
  • Unterstützung verschiedener Datentypen wie XML und JSON.

Zu den Nachteilen zählen:

  • Keine Statusbeibehaltung zwischen Anfragen.
  • Die wahre Quelle einer Ressource kann durch die Schichtenarchitektur verschleiert sein.
  • Nicht optimal für komplexe Anfragen.

REST-Vorlage definieren.

Antwort: Eine REST-Vorlage ist ein Hilfsprogramm oder Client, mit dem auf REST-APIs im Spring-Framework zugegriffen werden kann. Sie verbirgt den Code, der für die Anforderung von Ressourcen normalerweise erforderlich ist.

Was ist RESTful?

Antwort: RESTful-APIs oder -Dienste sind Schnittstellen, die den REST-Architekturstil (Representational State Transfer) umsetzen und mit Protokollen wie HTTP interagieren.

Was sind RESTful-Webdienste?

Antwort: RESTful-Webdienste sind für die optimale Funktion im Web konzipiert. Sie basieren auf der REST-Architektur mit Einschränkungen wie der einheitlichen Schnittstelle, der mehrschichtigen Architektur und der Zustandslosigkeit, um Performance und Skalierbarkeit zu maximieren.

Wie können Sie RESTful-Webdienste testen?

Antwort: Zum Testen eines RESTful-Webdienstes kann ein REST-Client wie Postman oder Thunder Client genutzt werden. Entscheidend ist dabei, die Antworten auf die gestellten Abfragen zu verstehen.

Für komplexe APIs mit vielen Endpunkten sind detailliertere Tests wie Unit-, Integrations-, Performance- und End-to-End-Tests erforderlich.

Nennen Sie einige Funktionen von RESTful-Webdiensten.

Antwort: Zu den Hauptmerkmalen von RESTful-Webdiensten gehören:

  • Unterstützung verschiedener Medientypen wie JSON und XML.
  • Skalierbarkeit.
  • Trennung von Client und Server.
  • Flexibilität.

Definieren Sie RESTful-Root-Ressourcenklassen.

Antwort: Root-Ressourcenklassen sind „Plain Old Java Objects“ (POJOs), die entweder mit `@Path` annotiert sind oder mindestens eine Methode mit `@Path` oder einem Request-Methodenbezeichner wie `@GET`, `@POST`, `@PUT` oder `@DELETE` enthalten.

Was ist URI?

Antwort: URI steht für Uniform Resource Identifier. Es handelt sich um eine Zeichenkette, die verwendet wird, um Ressourcen einer API oder eines Dienstes zu identifizieren oder zu lokalisieren. Sie basiert auf dem Namen oder Ort der Ressource, jedoch nicht auf einer bestimmten Methode.

Was ist Zustandslosigkeit in REST?

Antwort: Zustandslosigkeit bedeutet, dass zwei beliebige Anfragen in einer API voneinander unabhängig sind und keinen gemeinsamen Zustand haben. Jede Anfrage wird nach ihrer Beantwortung abgeschlossen, ohne Informationen über vorherige Anfragen zu speichern.

Was ist JAX-RS?

Antwort: JAX-RS ist eine Java-API, mit der Sie Anwendungen in Java entwickeln können, die der REST-Architektur folgen. Sie erleichtert die Entwicklung von REST-Anwendungen in Java erheblich.

Was sind die wichtigsten Anmerkungen in der JAX-RS-API?

Antwort: JAX-RS-Annotations werden verwendet, um Java-Klassen zu dekorieren und Ressourcen sowie die Methoden zur Bearbeitung dieser Ressourcen zu definieren. Einige wichtige Annotationen sind:

  • `@GET`: Für die Erstellung von GET-Anforderungen in HTTP.
  • `@POST`: Für die Erstellung von POST-Anforderungen in HTTP.
  • `@Path`: Bezieht sich auf den relativen Pfad einer Java-Klasse.
  • `@QueryParam`: Bezieht sich auf die Query-Parameter in einer URI oder URL.

Was sind einige Hauptfunktionen der JAX-RS-API?

Antwort: Zu den Funktionen von JAX-RS gehören:

  • Clientseitiges Caching.
  • Serverseitiges Caching.
  • Anpassung von Abfragezeichenfolgen.
  • Laufzeit-Annotationen.

Wie können die JAX-RS-Anwendungen konfiguriert werden?

Antwort: JAX-RS-Anwendungen bestehen aus mindestens einer Ressourcenklasse, die in einer WAR-Datei verpackt ist. Der Basis-URI, unter dem die Ressourcen antworten, kann auf zwei Arten festgelegt werden:

  • Verwendung der Annotation `@ApplicationPath` in einer Unterklasse von `javax.ws.rs.core.Application` innerhalb des WAR-Pakets.
  • Verwendung des `servlet-mapping`-Tags in der `web.xml` Implementierungsdeskriptordatei von WAR.

Was sind JAX-WS und JAX-RS?

Antwort: JAX-WS (Jakarta XML Web Services API) wird zur Entwicklung von APIs mit SOAP (Simple Object Access Protocol), einem XML-basierten Nachrichtenprotokoll, verwendet.

JAX-RS hingegen ist eine Java-API zur Erstellung von Webdiensten auf Basis der REST-Architektur.

Was sind HTTP-Statuscodes?

Antwort: Statuscodes sind eine Methode, um den Status der Antwort des Servers an den Client zu übermitteln. Sie sind im Antwortheader des Servers enthalten.

Der Client nutzt diese Statuscodes, um zu erkennen, ob eine Anfrage erfolgreich war, fehlgeschlagen ist oder ob es Probleme mit der Antwort gibt.

Einige häufige HTTP-Statuscodes sind:

  • `200` – „OK“: Die Anfrage wurde erfolgreich bearbeitet.
  • `404` – „Not Found“: Die Ressource oder der Endpunkt existiert auf dem Server nicht.
  • `500` – „Internal Server Error“: Der Server kann keine korrekte Antwort generieren oder ein unvorhergesehener Fehler ist aufgetreten.
  • `503` – „Service Unavailable“: Der Server kann derzeit keine Anfragen verarbeiten, da er möglicherweise gewartet wird oder überlastet ist.

Was sind HTTP-Methoden?

Antwort: HTTP-Methoden werden verwendet, um bestimmte Aktionen auf Ressourcen einer API auszuführen. Mit GET werden z.B. Daten abgerufen, während POST für die Aktualisierung von Daten verwendet wird.

Häufig verwendete HTTP-Methoden sind:

  • `GET`: Sollte nur zum Abrufen von Daten verwendet werden.
  • `POST`: Aktualisiert Ressourcen durch das Senden von aktualisierten Daten an den Server.
  • `DELETE`: Löscht die angegebene Ressource.
  • `PATCH`: Ändert Teile einer Ressource.

Wie funktioniert die HTTP-Basisauthentifizierung?

Antwort: Authentifizierung ist ein Prozess, um die Identität eines Clients zu bestätigen. Bei HTTP geschieht dies über einen Autorisierungs-Header, der vom Client gesendet wird.

Dieser Header enthält Benutzername/ID und Passwort des Clients, die dann vom Server verifiziert werden, um den Zugriff zu gewähren.

Wichtig ist, dass bei der HTTP-Authentifizierung der Kanal, über den die Anmeldeinformationen fließen, verschlüsselt und sicher sein sollte. Die Verwendung von HTTPS mit SSL wird dringend empfohlen, um die Sicherheit zu gewährleisten.

Was sind die Kernkomponenten der HTTP-Anfrage?

Antwort: Eine HTTP-Anfrage besteht aus:

  • Anforderungszeile: Die erste Zeile, die die HTTP-Methode, den Pfad oder Endpunkt und die HTTP-Version enthält.
  • Header: Metadaten der Anfrage.
  • Body (Optional): Die eigentliche Nachricht, nur bei einigen Anfragemethoden wie POST erforderlich.

Was sind die Kernkomponenten der HTTP-Antwort?

Antwort: Eine HTTP-Antwort besteht aus:

  • Status: Der vom Server gesendete HTTP-Statuscode.
  • Header: Enthalten nützliche Informationen über die Antwort.
  • Nachricht: Die eigentlichen Daten, die vom Server als Antwort auf eine Anfrage gesendet werden.

Was ist der Unterschied zwischen REST und AJAX?

Antwort: AJAX ist ein Client, mit dem RESTful-APIs angesprochen werden können. Es ermöglicht das Senden asynchroner Anfragen mit JavaScript. REST ist eine Architektur, die zur Erstellung von RESTful-APIs verwendet wird. AJAX dient als Client, während REST die architektonische Grundlage darstellt.

Was ist der Unterschied zwischen SOAP und REST?

Antwort: REST ist eine Architektur mit minimalen Einschränkungen für die Erstellung von APIs. SOAP ist ein Protokoll mit strengen Vorgaben zur Implementierung von APIs. REST ist flexibler und benutzerfreundlicher als SOAP. SOAP verwendet XML für Nachrichten, während REST verschiedene Datentypen wie JSON unterstützt. REST ist tendenziell leichter und schneller als SOAP. SOAP-Webdienste bieten integrierte Sicherheit, was ein Vorteil, aber auch ein Grund für die Komplexität ist.

Was ist der Unterschied zwischen PUT und POST?

Antwort: `POST` sendet Daten an den Server und kann bei wiederholten Anfragen zu unbeabsichtigten Nebenwirkungen (z.B. Duplikate) führen. `PUT` hingegen aktualisiert eine Ressource oder erstellt sie, falls sie nicht existiert. `PUT` ist idempotent, was bedeutet, dass wiederholte Anfragen den gleichen Effekt haben.

`PUT` ist idempotent, während `POST` nicht idempotent ist.

Was ist eine Nutzlast?

Antwort: Eine Payload ist der Text der Anfrage, die vom Client an den Server gesendet wird. Sie enthält die Daten, mit denen eine Antwort vom Server erhofft wird.

Was ist die maximale Payload-Größe, die in Post-Methoden gesendet werden kann?

Antwort: Es gibt kein Standardlimit im HTTP-Protokoll selbst. Das Limit wird von den Begrenzungen von Client oder Server bestimmt.

Was sind die Best Practices, die beim Erstellen von URIs befolgt werden müssen?

Antwort: Einige wichtige Punkte sind:

  • Keine Dateierweiterungen verwenden.
  • Konsistenz bei allen URIs.
  • Unterteilung in Domänen und Subdomänen.
  • Bindestriche oder Unterstriche zum Trennen von Wörtern.
  • Schrägstriche für Hierarchien.
  • Korrekte Codierung.
  • Lesbarkeit für Menschen.

Was sind idempotente Methoden?

Antwort: Idempotente HTTP-Methoden haben die gleiche Auswirkung auf den Server, auch wenn sie mehrfach mit identischen Anfragen aufgerufen werden. Ein Beispiel ist `DELETE`, das eine Ressource auch bei mehrfacher Ausführung nur einmalig entfernt.

Zu den idempotenten Methoden gehören:

  • `PUT`
  • `DELETE`
  • `GET`
  • `HEAD`
  • `OPTIONS`

Was ist Postbote?

Antwort: Postman ist ein API-Entwicklungstool zum Erstellen, Modifizieren und Testen von APIs. Es ermöglicht die schnelle Erstellung und das Testen von APIs ohne zusätzliche Client-Konfiguration.

Antwort: Der `Cache-Control`-Header enthält Anweisungen zur Konfiguration des Cachings in Browsern und Servern. Er informiert über den Umfang und die Dauer des Caches, bevor eine Netzwerk-Anfrage erforderlich ist.

Der `Cache-Control`-Header beinhaltet die folgenden Anweisungen:

  • `max-alter`
  • `no-cache`
  • `private`
  • `public`
  • `no-store`
  • `immutable`

Definieren Sie Messaging in RESTful-Webdiensten.

Antwort: Messaging in RESTful-Webdiensten bezieht sich auf die Kommunikation zwischen Client (HTTP-Anfrage) und Server (HTTP-Antwort).

Was ist der Unterschied zwischen monolithischer, SOA- und Microservices-Architektur?

Antwort: In einer monolithischen Architektur wird alles an einem Ort verwaltet. SOA (Serviceorientierte Architektur) verwendet verschiedene Dienste zur Verwaltung der Anwendung, wobei Integration zentral ist. Microservices ähneln SOA, nutzen aber autonome Softwareprogramme, die über APIs kommunizieren.

Wie funktioniert die Microservice-Architektur?

Antwort: Microservice-Anwendungen sind in kleinere Einheiten unterteilt, die eigenständig arbeiten und über APIs miteinander kommunizieren. Vorteile sind Agilität, Flexibilität, Skalierbarkeit, unabhängige Technologien, wiederverwendbare Dienste und einfache Bereitstellung.

Was ist CRUD?

Antwort: CRUD steht für Create, Read, Update, Delete. Dies sind die grundlegenden Operationen, die auf einer Ressource ausgeführt werden können. APIs, die all diese Operationen unterstützen, werden als CRUD-APIs bezeichnet.

Was ist Caching?

Antwort: Caching ist eine Technik zum Speichern von Antworten oder Anfragen auf Client oder Server, um diese wiederzuverwenden. Caching auf dem Client spart Bandbreite und Performance.

Wozu dient @RequestMapping?

Antwort: Diese Spring Framework Annotation wird genutzt, um Webanfragen bestimmten Handler-Klassen oder Methoden zuzuweisen.

Was macht @PathVariable?

Antwort: Die `@PathVariable`-Annotation im Spring Framework wird verwendet, um Werte aus Variablen im URI zu extrahieren und diese an Methodenvariablen zu übergeben.

Definieren Sie HttpMessageConverter.

Antwort: Ein `HttpMessageConverter` konvertiert HTTP-Anfragen oder Teile davon in benötigte Typen für Methodenargumente und konvertiert Rückgabewerte von Methoden in HTTP-Antworten.

Antwort: Einige Tools zum API-Testen sind:

  • Postman
  • Rest Assured
  • RestSharp
  • Katalon
  • ReadyAPI
  • Apigee

Letzte Worte

Aufgrund des Internets und ihrer einfachen Entwicklung sind APIs, insbesondere REST-APIs, heutzutage sehr populär.

Bei der Vorbereitung auf ein Bewerbungsgespräch sollten die oben genannten Fragen zu REST-APIs berücksichtigt werden.

Als Nächstes können Sie untersuchen, wie eine Website mit der Web Scraping API von wdzwdz geschabt wird.