In der vorherigen Vorlesung
haben wir etwas über REST-API erfahren.
Sie haben gesehen, wie die REST-API-Endpunkte
eine Möglichkeit unterstützen, eine Clientanwendung entweder
Daten vom Server abrufen oder Daten mithilfe der verschiedenen HTTP-Vorgänge auf den Server hochladen zu können.
In dieser Vorlesung und Übung, die dieser Vorlesung folgt,
werden wir speziell darüber nachdenken, welche Art von Unterstützung Express
für das Entwerfen und Implementieren eines REST API-basierten Servers unterstützt.
Insbesondere werden wir uns auch den Express-Router ansehen
und wie er es uns ermöglicht, unsere Anwendung zu unterteilen und
sie dann in mehrere Mini-Express-ähnliche Anwendungen zu organisieren,
die
sich zu der Express-Anwendung zusammenfügen, insbesondere wenn wir es mit verschiedenen REST-API und -Teile.
Um zusammenzufassen,
haben wir in der vorherigen Vorlesung REST im Detail untersucht.
Wir haben auch untersucht, wie jeder Endpunkt durch einen URI identifiziert wird,
und wie wir die verschiedenen Operationen auf
jedem Endpunkt mit dem entsprechenden HTTP-Verb,
dem GET, PUT, POST oder DELETE, angeben können.
In dieser Vorlesung
werden wir uns nun ansehen, wie Express die Entwicklung eines REST API-Servers unterstützt.
Wir betrachten die Unterstützung von Express für verschiedene Themen wie app.all,
app.get, put, post und delete,
und wie diese Methoden verwendet werden können, um einen REST API-Server zu konstruieren.
Innerhalb von Express können die verschiedenen Anwendungsgruppen mit der App, definiert werden.
und die verschiedenen Methoden.
Also, die app.all gibt eine Operation an, die für alle verschiedenen Verben durchgeführt werden muss,
on, in und part.
So
sehen wir beispielsweise in diesem Beispiel, dass der Endpunkt durch /Gerichte definiert ist,
und so wird app.all, was auch immer in der Funktion angegeben ist, die für app.all angegeben
wird, auf alle eingehenden Anfragen angewendet.
Die app.get gibt an, was für GET-Anfragen und
entsprechend für die POST-,
PUT- und DELETE-Anforderungen ausgeführt werden muss, die an den Endpunkt /dishens gesendet werden,
wie in diesem Beispiel gezeigt.
Express unterstützt auch das Definieren der Endpunkte mit Parametern.
So können Sie beispielsweise eine bestimmte Schalen-ID angeben, wenn Sie möchten,
und dann lassen Sie die Operation für
diesen bestimmten Endpunkt durchgeführt werden, der sich auf dieses spezielle Gericht mit einer bestimmten Schalen-ID bezieht.
In diesem Fall wird die Dish-ID selbst
als Parameter angegeben, und das dafür verwendete Muster ist,
wie Sie in diesem Beispiel sehen,
/dishes/: und dann würden Sie den Parameter hier angeben.
Um es uns leicht zu verstehen,
nannte ich den Parameter als DishID da drin.
Sie können jeden Parameternamen verwenden, den Sie auswählen, aber die
Verwendung eines aussagekräftigen Namens für einen Parameter erleichtert das Verständnis des Codes.
In diesem Beispiel
bedeutet der:dishid, dass, wenn wir eine Anfrage an einen Endpunkt ausgeben,
sagen wir zum Beispiel /dishes/23,
dann der disHid Parameter ermöglicht es uns, diese Zahl 23 zu extrahieren, so dass wir
auf Gericht Nummer 23 innerhalb
der Funktion arbeiten können, die innerhalb dieser Methode hier angegeben ist.
Dort
kann der Parameter, der disHid Parameter selbst erhalten werden, indem das Anforderungsobjekt verwendet wird, auf dem
die params Eigenschaft unterstützt, die Sie unterstützt haben, und
die params Eigenschaft unterstützt alle eingehenden Anforderungsparameter
, und insbesondere disHid
ist einer dieser Anforderungsparameter, die kann zugegriffen werden,
wie im Code hier gezeigt.
Wenn Sie eine PUT- oder POST-Anforderung vom Client an den Server senden,
schließen Sie die Daten häufig in den Hauptteil der Nachricht ein, die an den Server gesendet wird.
Nun, was bedeutet, dass wir eine Methode benötigen, um
Informationen aus dem Textkörper der Nachricht zu extrahieren.
Dies ist also, wo die Body Parser Middleware für Express sehr nützlich ist.
Der Body Parser ermöglicht es uns, die Informationen aus dem Hauptteil der Nachricht zu analysieren.
Um den Body-Parser zu verwenden, wie wir es erwarten
würden, würden wir das Body-Parser Knotenmodul installieren
und es dann innerhalb unserer Express-Anwendung benötigen
und dann app.use (BodyParser) angeben.
Und wenn der Körper Daten im JSON-Format enthält,
können Sie bodyParser.json sagen,
was bedeutet, dass dies nur Daten im
JSON-Format analysiert, die im Text dieser Anforderungsnachricht eingeschlossen sind.
Insbesondere
werden wir in der Übung eingehende Daten analysieren, die in Form einer JSON-Zeichenfolge gesendet werden.
Der Body-Parser analysiert, wie Sie es erwarten würden,
den Nachrichtentext und füllt die req.body -Eigenschaft.
Also, auf der Anfrage,
die body-Eigenschaft enthält, was aus dem
Körper der Anforderungsnachricht durch Bodyparser analysiert wird.
Wenn Sie eine Express-Anwendung implementieren,
die mehrere REST-API-Endpunkte unterstützt,
ist es sinnvoll, den Code in
mehrere Module zu unterteilen und diese dann für die Erstellung der gesamten Express-Anwendung zu verwenden.
Hier kommt uns der Express-Router zu Hilfe.
Ein Express-Router definiert viele Express-Anwendungen,
und innerhalb dieser vielen Express-Anwendungen
können Sie beispielsweise
mit einem bestimmten REST-API-Endpunkt
oder einem bestimmten Muster des REST-API-Endpunkts detaillierter umgehen.
So können wir zum Beispiel einen DishRouter als express.Router definieren,
und dann kann der DishRouter dann die Endpunkte behandeln.
Wenn Sie also etwas als Express.Router ausdrücken,
unterstützt es den Routenendpunkt.
Einer der Gründe für die Verwendung des Express-Routers
ist, wie Sie feststellen würden, dass Sie, wenn wir die Standard-App GET,
PUT, POST und DELETE Methoden verwenden,
für jede dieser Methoden
explizit die REST-API-Endpunkte angeben müssen.
Ein Vorteil der Verwendung von Express-Router besteht darin, dass, wenn Sie
den Router.ROUTE sagen und dann den
Endpunkt angeben, dieser Endpunkt auf alle Methoden angewendet wird und alle verschiedenen GET, PUT, POST
und DELETE verb-bezogenen Methoden alle
zusammen in die Route verkettet werden können, um den Code zu definieren für unsere Anwendung.
In der Übung, die dieser Vorlesung folgt, werden wir weitere Details dazu betrachten.
Mit diesem schnellen Verständnis, wie Express REST-API-Endpunkt unterstützt,
gehen wir zu der Übung über, in der wir
ihre Unterstützung für den /dishs-REST-API-Endpunkt konstruieren werden.
Im Rahmen der ersten Zuweisung
werden Sie
diese Express-Anwendung weiter erweitern, um zusätzliche REST-API-Endpunkte zu unterstützen,
einschließlich /promotions und /leader.
Wenn Sie die vorherigen Kurse in der Spezialisierung besucht haben,
werden Sie sofort beginnen zu sehen, warum wir
alle diese verschiedenen REST-API-Endpunkte auf anderen Serverseite unterstützen.