Einführung in die REST-API - RESTful Web Services

Dieser Artikel enthält eine Einführung in RESTful-Webdienste und eine Übersicht über REST und HTTP.

Sie beginnt eine Reihe von Beiträgen zur Entwicklung der REST-API:

  • Einführung in die REST-API - RESTful Web Services
  • Unterschiede zwischen REST und SOAP
  • REST-API-Entwicklung - Was ist Contract First (Vertrag zuerst)?
  • REST-API-Entwicklung - Was ist Code First (Code First)?
  • REST API - Was ist HATEOAS?
  • REST-API-Empfehlungen - Beispiele für den Entwurf von Webdiensten in Java und Spring



REST steht für REpresentational State Transfer (Wikipedia: "transfering presentation state"). Dies ist ein beliebter Architekturansatz zum Erstellen von APIs in der modernen Welt.

Sie werden lernen:


  • Was ist REST?
  • Worauf basiert die REST-API?
  • Wie wird HTTP beim Erstellen einer REST-API verwendet?
  • Was ist eine Ressource?
  • Wie definieren Sie REST-API-Ressourcen?
  • Was sind die Best Practices für die Entwicklung einer REST-API?

Was ist REST?


REST steht für REpresentational State Transfer. Es war ein Begriff, der ursprünglich von Roy Fielding geprägt wurde, der auch einer der Schöpfer des HTTP-Protokolls war. Eine Besonderheit von REST-Diensten ist, dass sie das HTTP-Protokoll optimal nutzen. Schauen wir uns nun kurz HTTP an.

HTTP-Übersicht


Lassen Sie uns zuerst den Browser öffnen und zur Webseite gehen:



Klicken Sie anschließend auf eine der Ergebnisseiten:



Als nächstes können wir auf den Link auf der Seite klicken, auf der wir uns befinden:



Und gehen Sie zu einer anderen Seite:



So surfen wir normalerweise im Internet.

Wenn wir im Internet surfen, passieren viele Dinge hinter den Kulissen. Das Folgende ist eine vereinfachte Ansicht dessen, was zwischen dem Browser und den Servern geschieht, die auf den von ihnen besuchten Websites ausgeführt werden:



HTTP-Protokoll


Wenn Sie im Browser eine URL eingeben, z. B. www.google.com , wird eine Anfrage an den Server an den unter der URL angegebenen Server gesendet. Dann bildet dieser Server die Antwort und gibt sie aus. Das Format dieser Anfragen und Antworten ist wichtig. Diese Formate werden durch das HTTP- Protokoll Hyper Text Transfer Protocol definiert .

Wenn Sie die URL in den Browser eingeben, wird eine GET-Anforderung an den angegebenen Server gesendet. Der Server antwortet dann mit einer HTTP-Antwort, die HTML- Daten enthält - Hyper Text Markup Language . Der Browser empfängt dann diesen HTML-Code und zeigt ihn auf dem Bildschirm an.

Angenommen, Sie füllen ein Formular auf einer Webseite mit einer Liste von Elementen aus. Wenn Sie in diesem Fall auf die Schaltfläche Senden klicken, wird die HTTP- POST- Anforderung an den Server gesendet.

HTTP- und RESTful-Webdienste


HTTP bietet eine grundlegende Ebene zum Erstellen von Webdiensten. Daher ist es wichtig, HTTP zu verstehen. Hier sind einige Schlüsselabstraktionen.

Ressource


Eine Ressource ist eine Schlüsselabstraktion, auf die sich das HTTP-Protokoll konzentriert. Eine Ressource ist alles, was Sie durch Ihre Anwendung der Außenwelt zeigen möchten. Wenn wir beispielsweise eine Aufgabenverwaltungsanwendung schreiben, lauten die Ressourceninstanzen wie folgt:

  • Bestimmter Benutzer
  • Spezifische Aufgabe
  • Aufgabenliste

Ressourcen-URI


Wenn Sie RESTful-Services entwickeln, sollten Sie sich auf Anwendungsressourcen konzentrieren. Die Art und Weise, wie wir eine bereitgestellte Ressource identifizieren, besteht darin, ihr einen URI zuzuweisen, den universellen Ressourcenbezeichner. Zum Beispiel:

  • Benutzer erstellen: POST / Benutzer
  • Benutzer löschen : DELETE / users / 1
  • Holen Sie sich alle Benutzer: GET / users
  • Holen Sie sich einen Benutzer: GET / users / 1

REST und Ressourcen


Es ist wichtig zu beachten, dass Sie bei REST über die Anwendung in Bezug auf Ressourcen nachdenken müssen:
Bestimmen Sie, welche Ressourcen Sie für die Außenwelt öffnen möchten.
Verwenden Sie Verben, die bereits vom HTTP-Protokoll definiert wurden, um Operationen an diesen Ressourcen auszuführen.

So wird der REST-Service normalerweise implementiert:

  • Datenaustauschformat : Es gibt keine Einschränkungen. JSON ist ein sehr beliebtes Format, obwohl auch andere wie XML verwendet werden können.
  • Transport : immer HTTP. REST ist vollständig HTTP-basiert.
  • Servicedefinition : Hierfür gibt es keinen Standard und REST ist flexibel. Dies kann in einigen Szenarien ein Nachteil sein, da eine aufwändige Anwendung möglicherweise die Anforderungs- und Antwortformate verstehen muss. Webanwendungsdefinitionssprachen wie WADL (Web Application Definition Language) und Swagger sind jedoch weit verbreitet.

REST konzentriert sich auf Ressourcen und darauf, wie effizient Sie Operationen mit ihnen über HTTP ausführen.

HTTP-Komponenten


HTTP definiert die folgende Anforderungsstruktur:

  • Anforderungszeile ( Request Line ) - Definiert die Art der Nachricht
  • Anforderungsheader ( Header-Felder ) - Charakterisieren Sie den Nachrichtentext, die Übertragungsparameter und andere Informationen
  • Nachrichtentext ( body ) - optional

HTTP definiert die folgende Struktur für eine Antwortnachricht:

  • Statuszeile mit Statuscode und Grundmeldung
  • Antwortheaderfelder
  • zusätzlicher Text der Nachricht ( body )

HTTP-Anforderungsmethoden


Die in der HTTP-Anforderung verwendete Methode gibt an, welche Aktion Sie mit dieser Anforderung ausführen möchten. Wichtige Beispiele:

  • GET : Detaillierte Ressourceninformationen abrufen
  • POST : Erstellt eine neue Ressource
  • PUT : Aktualisieren Sie eine vorhandene Ressource
  • LÖSCHEN : Ressource löschen

HTTP-Antwortstatuscode


Der Statuscode ist immer in der HTTP-Antwort enthalten. Typische Beispiele:

  • 200 - Erfolg
  • 404 - Seite nicht gefunden

Zu diesem Thema gibt es ein Autorenvideo.

Zusammenfassung


Dieser Artikel bietet einen Überblick über den REST-Architekturstil auf oberster Ebene. Die Tatsache, dass HTTP der Hauptbaustein von REST-Diensten ist, wird hervorgehoben. HTTP ist ein Protokoll, mit dem die Struktur von Browseranforderungen und -antworten bestimmt wird. Wir haben gesehen, dass sich HTTP hauptsächlich mit Ressourcen befasst, die auf Webservern verfügbar sind. Ressourcen werden mithilfe eines URI identifiziert, und Operationen an diesen Ressourcen werden mithilfe von Verben ausgeführt, die vom HTTP-Protokoll definiert werden.

Schließlich haben wir untersucht, wie REST-Services die von HTTP angebotenen Funktionen optimal nutzen, um Ressourcen für die Außenwelt bereitzustellen. REST legt keine Einschränkungen für die Darstellungsformate von Ressourcen oder für die Definition eines Dienstes fest.

Zusätzliche Lektüre


Grundlagen von RESTful Architecture
REST-APIs entwickeln

Source: https://habr.com/ru/post/de483202/


All Articles