Transkripte
1. Kurseinführung: Willkommen zurück zu Modul vier
des Express JS-Kurses,
BILRSTful APIs Dieser Kurs ist eine Fortsetzung der Express
JS-Kursreihe Mein Name ist Shan Ragunci und ich werde Sie
auf dieser aufregenden Reise begleiten Mit meiner jahrelangen
Erfahrung in der Entwicklung skalierbarer APIs und
Echtzeitsysteme helfe
ich Ihnen dabei, die Kunst der
Erstellung von RESTful-APIs
mit Express JS zu
erlernen Erstellung von RESTful-APIs
mit In diesem Modul
werden wir alles behandeln. Sie müssen moderne
und effiziente RESTful-APIs erstellen. Dazu gehören die Entwicklung von
RESTful-Diensten und die Erstellung Ihres ersten
Express S-Servers. Verwenden Sie Tools wie
Normon, um die
Entwicklung und Postboten zum Testen Ihrer ABI
zu optimieren , Ihre App mit
Umgebungsvariablen zu
sichern und
Eingaben zu validieren , um die Sicherheit zu Umgang mit SCTP-Methoden
wie Get, Put und Delete für die
Interaktion mit Daten und die Beherrschung von dynamischem Routing, um Ihre API flexibel
und leistungsfähig zu gewährleisten, den
Umgang mit SCTP-Methoden
wie Get,
Put und Delete für die
Interaktion mit Daten und die Beherrschung von dynamischem Routing, um Ihre API flexibel
und leistungsfähig zu
machen. Dieser Kurs ist perfekt für Entwickler mit Sie möchten den nächsten Schritt
in der API-Entwicklung machen? Wenn Sie schon immer Ihre eigenen
Backend-Dienste
erstellen wollten , zeigt Ihnen
dieses Modul
genau, wie das geht Am Ende dieses Moduls werden
Sie über die
Fähigkeiten verfügen, um RESTful-APIs zu entwerfen und zu
erstellen,
die sicher,
skalierbar und
produktionsbereit sind ,
skalierbar und
produktionsbereit Dies sind unverzichtbare Fähigkeiten
für Backend-Entwickler und ein entscheidender Schritt, um ein Full-Stack-Experte
zu werden Schließlich hilft Ihnen unser praktisches Projekt dabei, eine voll funktionsfähige,
RESTful-API von Grund auf neu zu
erstellen RESTful-API von Du erstellst Routen
für die Bearbeitung von Get-, Post-, Put- und Löschanfragen, sicherst deine App mit
Umgebungsvariablen
und validierst Eingaben, um die Zuverlässigkeit zu
gewährleisten Ich freue mich sehr, Ihnen dabei zu helfen,
leistungsstarke und skalierbare
APIs mit Express JS zu erstellen . Lassen Sie uns eintauchen und loslegen. Wir sehen uns in der ersten Vorlesung.
2. Übersicht über diesen Abschnitt: I Also, früher in Abschnitt zwei, wo wir über das
Knotenmodulsystem gesprochen haben, haben
Sie von
diesem STDP-Modul erfahren Wir verwenden dies, um einen
Webserver zu erstellen, der auf Port
3.000 lauscht und auf
Anfragen an diese Endpunkte reagiert Also die Root- oder API-Kurse. Dieser Ansatz
ist zwar völlig in Ordnung, aber nicht ideal für die Erstellung einer komplexen Anwendung, da wir
in einer großen komplexen Anwendung möglicherweise verschiedene Endpunkte haben und wir nicht
all diese Anweisungen
in dieser Funktion zusammenfassen möchten all diese Anweisungen
in dieser Funktion In diesem Abschnitt werden
wir uns also mit Express befassen, einem schnellen und
einfachen Framework
für
die Erstellung von Webanwendungen Als Nächstes werden wir uns also mit den
RESTful-Diensten befassen.
3. RESTful-Services mit Express.js: Beginnen wir diesen Abschnitt einer kurzen Einführung in
die Rest-PL-Dienste, auch RestPL-APIs genannt Wenn Sie bereits wissen,
worum es bei Rest geht, können Sie dieses Video gerne überspringen Deshalb
habe ich Ihnen zu
Beginn des Kurses die
Client-Server-Architektur vorgestellt. Die meisten, wenn nicht sogar alle
Anwendungen, die wir heutzutage verwenden,
folgen also dieser Architektur. Die App selbst ist der Client oder der
Frontend-Teil unter der Haube. Sie muss mit dem Server oder
dem Backend kommunizieren , um die Daten abzurufen
oder zu speichern. Diese Kommunikation erfolgt
über das SDDV-Protokoll, das gleiche Protokoll,
das unser
Web unterstützt Auf dem Server
stellen wir also eine Reihe von
Diensten zur Verfügung, auf die über das sttBpTocol
zugegriffen werden kann Der Client kann
diese Dienste
dann direkt aufrufen , indem Nun, hier
kommt der Rest ins Spiel. Rest ist die Abkürzung für
Representational State Transfer. Und ich weiß, dass es für Sie wahrscheinlich
keinen Sinn ergibt, weil es von
einem Doktoranden im
Rahmen seiner Dissertation vorgestellt wurde einem Doktoranden im
Rahmen seiner Dissertation Aber abgesehen von der Theorie ist
RST im Grunde eine Konvention zum Aufbau
dieser SDDB-Dienste Deshalb verwenden wir einfache
SgtppToCol-Prinzipien um Unterstützung beim Erstellen,
Lesen, Aktualisieren und Löschen von Daten bereitzustellen Lesen Wir bezeichnen diese Operationen
insgesamt als Rohoperationen . Lassen Sie uns nun
diese Konvention
anhand eines echten PAL-Beispiels untersuchen anhand eines echten PAL-Beispiels Nehmen wir an, wir haben
eine Firma namens Fair Wheels für die
Vermietung von Autos. Wir haben eine Client-App, mit der wir eine Liste unserer
Kunden auf dem Server
verwalten. Wir sollten den Dienst
an einem solchen Endpunkt verfügbar machen. Fairwheels.com hat also den Schrägstrich der
API mit dem Schrägstrich CUSTOMers sodass der Kunde SGTBRQuest
mit diesem Endpunkt
senden kann, um mit unserem Service Nun ein paar Dinge über diesen Endpunkt, die Sie wissen müssen. Zuallererst kann die Adresse mit
SGDP oder HTTPS beginnen. Das hängt von der Anwendung
und ihren Anforderungen ab. Wenn Sie möchten, dass die Daten auf einem sicheren Kanal
ausgetauscht werden, würden
Sie GDPs verwenden Danach haben wir die
Domain der Anwendung. Als nächstes haben wir API. Dies ist nicht verpflichtend, aber Sie sehen, dass sich viele Unternehmen
an
diese Konvention halten , um
ihre RESTful-Dienste anzubieten Sie enthalten das Wort API
irgendwo in der Adresse. Es kann nach der Domain stehen oder es kann sich um eine Subdomain
wie apfairwals.com Es gibt keine feste Regel. Danach haben wir Kunden, was sich auf
die Sammlung von
Kunden in unserer Anwendung bezieht . In der übrigen Welt bezeichnen wir
diesen Teil als Ressource. Wir können unsere Ressourcen
wie Kunden,
Autos und Mietwagen auf
verschiedenen Endpunkten Das ist also unser Endpunkt, um mit den Kunden zu
arbeiten. Alle Vorgänge
rund um Kunden,
wie z. B. das Erstellen eines Kunden
oder das Aktualisieren eines Kunden würden durch Senden
einer STDB-Anfrage
an diesen Endpunkt erledigt einer STDB-Anfrage
an diesen Endpunkt Die Art der GTB-Anfrage bestimmt die Art
der Operation Jede SGDP-Anfrage hat also das,
was wir ein Verb oder
eine Methode nennen , die
ihren Typ oder ihre Absicht bestimmt Hier sind die
Standard-HTTP-Methoden. Wir haben Get zum Abrufen von Daten, Post zum Erstellen von Daten, Put zum Aktualisieren von Daten und Löschen zum Löschen von Daten. Lassen Sie uns nun jeden
dieser Punkte anhand des Beispiels unserer
Kunden untersuchen . Um die Liste
aller Kunden zu erhalten, sollten
wir eine
STD-Abrufanfrage an diese Adresse senden. Beachten Sie den Pluralnamen Kunden. Hier wird eine
Liste von Kunden angezeigt. Wenn wir also eine
STP-GET-Anfrage an diesen Endpunkt senden, sollte
uns
unser Service so etwas senden Wir haben also eine Reihe
von Kundenobjekten. Wenn wir einen einzelnen Kunden haben wollen, sollten
wir die ID
dieses Kunden in die Adresse aufnehmen. Dann würde unser Server
mit einem
Kundenobjekt wie diesem antworten . Um nun einen Kunden zu aktualisieren, sollten
wir eine
stdpPut-Anfrage an diesen Endpunkt senden Und beachten Sie, dass wir hier die ID des Kunden angeben,
der aktualisiert
werden soll Wir sollten aber auch
das Kundenobjekt in
den Text der Anfrage aufnehmen . Dies ist also eine vollständige
Darstellung
des Kundenobjekts mit
aktualisierten Eigenschaften. Wir senden dies an den Server, und der Server aktualisiert
den Kunden anhand
dieser Werte mit einer bestimmten ID. Ähnlich wie beim Löschen eines Kunden sollten
wir eine
STDP-Löschanfrage an diesen Endpunkt senden Aber hier müssen wir das
Kundenobjekt nicht in den Text
der Anfrage
aufnehmen , da wir zum Löschen eines
Kunden lediglich eine ID
benötigen Und schließlich müssen
wir, um einen Kunden zu
erstellen, eine
stdpPostrQuest an diesen Endpunkt senden Nicht das hier, weil wir einen neuen
Kunden hinzufügen. Wir haben es nicht mit
einem bestimmten Kunden zu tun. Wir haben die
ID nicht in der Adresse. Wir arbeiten mit einer Reihe
von Kunden zusammen. Wir fügen dieser Sammlung also einen neuen
Kunden hinzu, weshalb wir das Kundenobjekt in
den Text
der Anfrage aufnehmen sollten . Der Server ruft dieses Objekt und erstellt einen Kunden für uns. Das ist also die
Restful-Konvention. Wir stellen unsere Ressourcen
wie Kunden mit einer einfachen, aussagekräftigen Adresse zur Verfügung und unterstützen verschiedene Vorgänge rund um sie herum, wie z. B. die Erstellung
oder Aktualisierung mit Standard-GTP-Methoden In diesem Abschnitt erfahren Sie
, wie Sie mithilfe des Express-Frameworks den RESTful-Service für
die
Verwaltung der Kundenliste erstellen RESTful-Service für
die
Verwaltung der Kundenliste In diesem Abschnitt werden
wir jedoch keine Datenbankarbeit durchführen ,
da dies zusätzliche Komplexität mit
sich bringt Unser Fokus wird ausschließlich
auf dem Aufbau von SDDP-Services liegen, und wir werden ein einfaches Array
im Speicher verwenden , um die
Liste unserer Kunden zu führen Später im Kurs werden wir uns mit der Verwendung einer Datenbank
befassen.
4. Express.js: Eine Einführung: Also hier ist das Zitat, das wir in dem Abschnitt
über Node Core
geschrieben haben , wo ich Ihnen
das STDP-Modul vorstelle Wir können also sehen, dass
wir mit dem STDP-Modul einen Webserver erstellen können Hier haben wir eine
Callback-Funktion, die
zwei Parameter verwendet:
Anfrage und Antwort Und mit diesem Anforderungsobjekt können
wir die URL
der eingehenden Anfrage überprüfen Damit können wir
verschiedene Routen für
unsere Anwendung definieren . Wenn Sie also beispielsweise eine
Anfrage für
API-Geldbörsen haben , werden wir dem Kunden auf diese Weise
antworten Dieser Ansatz funktioniert
zwar, ist aber nicht sehr wartungsfreundlich,
da wir, wenn wir mehr Routen
für unsere Anwendung
definieren, mehr I-Blöcke
in dieser Callback-Funktion hinzufügen müssen Dann kommt also ein Framework
ins Spiel. Ein Framework gibt unserer
Anwendung eine angemessene Struktur, sodass wir problemlos
weitere Routen hinzufügen können , während
unser
Anwendungscode wartbar bleibt unser
Anwendungscode wartbar Mittlerweile gibt es verschiedene
Frameworks für die Erstellung von Webanwendungen und
Webservern auf dem Knoten Das beliebteste ist Express. Wenn Sie also zu onpmjs.com gehen, suchen
wir nach Express Die aktuelle Version
ist also Version 4.18 0.2. Lassen Sie uns hier einen kurzen Blick darauf werfen. Schauen Sie sich hier auf der rechten Seite die Statistiken an. Es gab über 27
Millionen wöchentliche Downloads. Es ist ein sehr beliebtes Framework. Es ist auch sehr schnell, leicht und
perfekt dokumentiert. jetzt, zurück im Terminal, Lassen Sie uns jetzt, zurück im Terminal, einen neuen
Ordner für diesen Abschnitt erstellen. Also werde ich
das Express Themo nennen. Gehen wir jetzt in diesen Ordner führen NPM darin mit Ja Jetzt haben wir also ein Paket
jcnFle und endlich können
wir Express installieren Wunderschön. In der nächsten Vorlesung werde
ich
Ihnen zeigen, wie Sie
Ihren ersten Webserver
mit Express erstellen .
5. Aufbau Ihres ersten Express.js-Servers: Ordnung. Lassen Sie uns jetzt im VS-Code eine neue Datei-App hinzufügen. In dieser Datei wollen
wir also zuerst das
Express-Modul laden. Also verwenden wir unsere benötigte Funktion und geben ihr den Namen unseres
Moduls, der Express ist. Das gibt jetzt eine Funktion zurück. Das nennen wir Express. Okay. Jetzt müssen wir
diese Funktion so aufrufen. Und wie Sie sehen können,
gibt dies ein Objekt
vom Typ Express zurück. Konventionell
nennen wir dieses Objekt App. Also speichern wir das Ergebnis
in einer App mit konstantem Aufruf. Das stellt also
unsere Anwendung dar. Dieses App-Objekt hat nun eine
Reihe nützlicher Methoden. Wir haben Methoden wie t, Post, Put und Delete. All diese Methoden
entsprechen STDP-Verben
oder STTP-Methoden , von denen ich Ihnen weiter
oben in diesem Abschnitt erzählt habe Wenn Sie also
eine DDP-Post-Anfrage
an einen Endpunkt bearbeiten möchten , würden
Sie App Dot Post verwenden In dieser Vorlesung wollen
wir nur App Punkt G
verwenden. Wir
wollen ein paar
Endpunkte implementieren, die auf eine TDP-Get-Anfrage antworten Diese Methode benötigt also
zwei Argumente. Das erste Argument ist
der Pfad oder die URL. Also hier werde ich einen
Schrägstrich verwenden , um das
Stammverzeichnis der Website darzustellen Jetzt ist das zweite Argument
eine Callback-Funktion. Dies ist eine Funktion, die aufgerufen
wird, wenn wir eine StdPgrQuest an diesen Endpunkt senden Okay, diese
Callback-Funktion sollte also
zwei Argumente haben zwei Argumente Das geht also zu einem Codeblock. Jetzt hat dieses
Anforderungsobjekt eine Reihe nützlicher Eigenschaften, die
uns Informationen über
die eingehende Anfrage geben . Wenn wir mehr über
all diese Eigenschaften erfahren möchten
, schauen wir uns am besten die
Express-Dokumentation an, da
wir
in diesem Kurs nur eine
Handvoll dieser Eigenschaften verwenden werden. Gehen Sie also oben zu
expresj.com und
schauen Sie sich die API-Referenzversion vier an Jetzt können Sie hier
das Anforderungsobjekt sehen, und darunter können Sie
alle Eigenschaften sehen, die Ihnen zur Verfügung
stehen Wir haben eine Basis-URL, wir haben einen Text zum Lesen des
Hauptteils der Anfrage, Cookies, einen neuen Hostnamen , eine
IP-Methode, die ursprüngliche URL ,
Parameter usw. Also zurück zu unserem Code: Wenn wir eine
GDP-Anfrage zum Stammverzeichnis
unserer Website erhalten , werden
wir
mit einer Hello World-Nachricht antworten. Antwortet auf CNN Hallo WW. So
definieren wir nun eine Route. Wir geben den Pfad oder die
URL und eine Callback-Funktion an, die auch als Route-Handler
bezeichnet wird Jetzt müssen wir endlich einen bestimmten Port
abhören. Also nennen wir App dot LICEN. Wir
geben ihr eine Portnummer 3.000. Und optional
können wir eine Funktion übergeben. Diese wird aufgerufen,
wenn die Anwendung anfängt,
den angegebenen Pot abzuhören. Also verwenden wir wieder Syntax
der Pfeilfunktion , um etwas
auf der Konsole anzuzeigen. Das Punktprotokoll
der Konsole überwacht also Port 3.000. Jetzt zurück in der
Terminalknoten-App dot js. Okay, wir hören
auf Port 3.000 ab. Wechseln
wir nun zu Cron und gehen zum lokalen Host-Port 3.000 Also hier ist unsere Hello
World Botschaft. Lassen Sie uns nun eine andere Route definieren. Also werden
wir die App noch einmal Dot Cat aufrufen. Nun, dieser wird Slash API Slash CoorSS
sein. Auch hier übergeben wir
die Funktion mit zwei Argumenten, nämlich
Anfrage und Antwort,
und das geht an Im realen Szenario wollen wir
hier die Liste der
Kurse aus der Datenbank abrufen und sie zurückgeben. Aber wie ich Ihnen bereits gesagt habe, konzentrieren wir uns
in diesem Abschnitt
ausschließlich auf den Aufbau
dieser Endpunkte Wir werden keine Datenbankarbeit
machen, also gebe ich einfach eine Reihe von Zahlen
zurück Die Antwort, die gesendet wurde,
gibt also eine Reihe von freien Zahlen weiter. In Zukunft können wir
diese Zahlen durch
tatsächliche Kursobjekte ersetzen . Jetzt, zurück im Terminal, müssen
wir diesen
Vorgang beenden und erneut starten. Drücken Sie also Strg und C. Okay, noch
einmal,
Notiz, App, um nachzujagen. Gehen wir jetzt zurück in Pro zu
Slash APIs OSS. Schau, wir haben eine Reihe
von kostenlosen Nummern. Wunderschön. Also darauf möchte
ich, dass du
hier achtest. In dieser Implementierung haben wir diese I-Blöcke
nicht. Wir definieren neue Routen, indem wir die App dot get
aufrufen. Mit dieser Struktur können
wir, wenn
unsere Anwendung wächst, einige dieser
Routen in andere Dateien verschieben. Zum Beispiel können wir
alle Routen, die sich auf
Kurse beziehen, in eine separate
Datei wie Courses Dot JS verschieben . Express gibt unserer Anwendung
ein Grundgerüst, eine Struktur.
6. Effiziente Entwicklung mit Nodemon: Bisher haben Sie bemerkt, dass wir jedes Mal, wenn wir
eine Änderung an diesem Code vornehmen, zum Terminal zurückkehren und
diesen Vorgang beenden und erneut starten müssen diesen Vorgang beenden und erneut starten Das ist sehr mühsam. Also werde ich
dir einen besseren Weg zeigen. Wir werden ein
Node-Paket namens Nord Mode installieren, was die Abkürzung für Node Monitor ist. Also
installiert NPM G im Terminal, weil wir es global installieren
wollen, damit wir es überall ausführen können Und der Name des
Pakets ist Nord Mode. Wie ich Ihnen bereits gesagt habe, müssen Sie
Pseudo in
den Vordergrund stellen,
wenn
Sie einen Mac verwenden
und die Berechtigungen nicht richtig konfiguriert verwenden
und die Ordnung? Kein
Modus ist installiert. Anstatt
unsere Anwendung mit dem
Knoten auszuführen, verwenden wir damit den Knotenmodus. Okay? Jetzt können Sie sehen, dass Normon alle
Dateien in diesem Ordner beobachtet, Dateien mit beliebigen Erweiterungen Also wenn du hierher
zurückkommst und
eine einfache Änderung vornimmst und
dann die Datei speicherst Schauen Sie mal, im Terminal Normon aufgrund
der Änderungen unsere Anwendung
oder unseren Prozess neu gestartet aufgrund
der Änderungen unsere Anwendung
oder unseren Prozess Wir müssen das also nicht mehr manuell
machen. jetzt wieder im Browser Wenn wir jetzt wieder im Browser eine Anfrage an
das Stammverzeichnis der Website senden, unsere neue
Nachricht hier angezeigt.
7. Konfigurationen mit Umgebungsvariablen sichern: Eine Sache, die wir in
diesem Code verbessern
müssen , ist dieser fest
codierte Wert für den Port. Also haben wir 3.000
als willkürliche Zahl verwendet. Das mag zwar auf
dem Entwicklungscomputer funktionieren, aber es ist unwahrscheinlich, dass es in einer
Produktionsumgebung funktioniert. Denn wenn Sie
diese Anwendung
in einer Hostumgebung bereitstellen , wird
der Port dynamisch von
der
Hostumgebung zugewiesen. Wir können uns also nicht darauf verlassen, dass
3.000 verfügbar sind. Der Weg, dies zu beheben, besteht darin eine
Umgebungsvariable zu verwenden. Normalerweise haben
wir in Hosting-Umgebungen
für Knotenanwendungen diese
Umgebungsvariable namens Port. Eine
Umgebungsvariable ist im Grunde eine Variable, die Teil
der Umgebung ist , in der ein Prozess ausgeführt wird. Ihr Wert wird außerhalb
dieser Anwendung festgelegt. Ich werde dir gleich zeigen
, wie das funktioniert. In dieser Anwendung müssen
wir also
den Wert dieser
Sportumgebungsvariablen lesen . Und das tun wir, indem wir das
Prozessobjekt verwenden. Wir haben dieses globale
Objekt namens Prozess. Dieses Objekt hat eine
Eigenschaft namens N, was die Abkürzung für
Umgebungsvariablen ist. Und danach fügen wir den Namen unserer
Umgebungsvariablen hinzu. In diesem Fall, also wenn das gesetzt ist, werden
wir es verwenden. Andernfalls werden
wir 3.000 verwenden. Jetzt können wir das Ergebnis
in einer Konstante namens Port speichern. Okay, lass uns das löschen. Und schließlich
müssen wir 3.000 durch
Port ersetzen und auch unsere
Nachricht entsprechend ändern. Also werde ich diesen
einzelnen Code durch Backtick ersetzen. Wir können also ein
Template-Literal verwenden. Und hier werden wir
3.000 durch einen dynamischen Wert ersetzen 3.000 durch einen dynamischen Wert Also fügen wir Dosin und Curryklammern hinzu und
fügen dann unsere Jetzt, zurück im Terminal, lassen Sie uns diese
Anwendung im Node-Modus ausführen Sie können also sehen, dass
ich auf diesem Computer keine
Umgebungsvariable namens Port habe. Aus diesem Grund wird 3.000 als
Port für den Webserver verwendet. Jetzt werde ich eine
Umgebungsvariable setzen. Also lasst uns diesen Prozess beenden. Auf dem Mac können wir
eine Umgebungsvariable festlegen, indem wir
den Exportbefehl ausführen. Wenn wir unter Windows arbeiten, sollten
Sie Set in der
Befehlszeile und
Dollar und Doppelpunkt in Power Shell verwenden . Jetzt fügen wir in diesem Fall den Namen
der
Umgebungsvariablen Port hinzu und legen ihren Wert fest. Ich werde 5.000 verwenden. Jetzt haben wir also diese
Umgebungsvariable namens Port mit einem Wert von 5.000. Damit führen wir
diese Anwendung aus,
Norman, Sie können sehen , dass wir jetzt Port 5.000
abhören. Dies ist also der richtige Weg, um Ihren
Node-Anwendungen einen Port
zuzuweisen. Sie sollten versuchen,
den Wert einer
Umgebungsvariablen namens Port zu lesen . Wenn es einen Wert gibt, sollten
Sie diesen verwenden. Verwenden Sie andernfalls eine
beliebige Zahl für Ihren Entwicklungscomputer.
8. Dynamisches Routing mit Routenparametern: Ordnung, derzeit haben wir eine Route, um
die Liste der Kurse abzurufen. In dieser Vorlesung werde
ich Ihnen nun zeigen,
wie Sie eine Route erstellen
, um einen einzelnen Kurs zu erhalten. Zu Beginn dieses Abschnitts, in dem ich über
RESTful-Services gesprochen habe, Sie gelernt, dass
wir,
um einen einzigen Kurs zu erhalten, die ID
des Kurses in die URL aufnehmen sollten Der Endpunkt sollte also wie
dieser Slash-API-CSS-Endpunkt aussehen. Angenommen, eine ist
die ID des Kurses. Schauen wir uns also an, wie wir eine solche Route
implementieren können. Also App Dot Get, wir fügen den Pfad hinzu, der
Slash-API-Slash-Kurse lautet Jetzt müssen wir hier einen Parameter
definieren. Also fügen wir Spalte und ID hinzu. Diese ID ist der Name
unseres Parameters. Hier könnten wir alles gebrauchen. Es muss kein Ausweis sein. Es könnte die Kurs-ID sein, aber ID ist kürzer und
konventioneller. Jetzt fügen wir unsere
Route-Handler-Funktion hinzu. Anfrage und Antwort gehen also an. Um
diesen Parameter zu lesen, verwenden
wir nun Anforderungspunktformen Punkt-ID. Lassen Sie uns das vorerst einfach
an den Kunden senden. Also antworte Punkt N. Okay.
Zurück im Browser. Gehen wir nun
zur Slash-API COSSSO über. Sie können also sehen, dass wir den Wert dieses
Parameters erfolgreich gelesen Es ist auch möglich,
mehrere Parameter in einer Route zu haben . Stellen Sie sich zum Beispiel vor, Sie bauen einen Dienst
für die Stromversorgung eines Blocks auf, sodass wir nach Ihrem Monat eine Route
wie diese haben könnten Wir haben also zwei Parameter. Und damit können wir alle Beiträge für den angegebenen
Monat und das angegebene Jahr erhalten. Jetzt können wir diese
Parameter wie zuvor lesen. Fordern Sie also Punkt-PRMs
pro Jahr oder Monat an. Lassen Sie mich Ihnen für diese Demo
diesen Request Dot PremsObject zeigen . Gehen wir nun zu
API Post 2023 und eins. Das ist also unser
PAMs-Anforderungsobjekt. Wir haben zwei
Eigenschaften und einen Monat, und sie werden basierend
auf unseren Routenparametern benannt Mit dem Express können wir auch Abfragezeichenfolgenparameter
abrufen. Dies sind Parameter, die wir der URL nach
einem Fragezeichen
hinzufügen. Zum Beispiel können wir alle Beiträge im
Januar 2023
abrufen und
sie nach ihrem Namen sortieren. Also fügen wir ein Fragezeichen hinzu und
sortieren, indem wir es auf Namen setzen. Dies ist ein
Abfragezeichenfolgenparameter. Wir verwenden
Abfragezeichenfolgenparameter, um
zusätzliche Daten für unsere
Back-End-Dienste bereitzustellen . Wir verwenden also Routenparameter für wichtige oder
erforderliche Werte, wohingegen wir
Abfragezeichenfolgenparameter
für alles verwenden , was optimal ist. Lassen Sie mich Ihnen nun zeigen, wie man Abfragezeichenfolgenparameter
liest. Also zurück im VS-Code, anstatt Punkt-PRMs anzufordern, verwenden
wir Request Dot Query, Save Back in Chrome, und
das ist, was wir bekommen Abfrageparameter
werden also in
einem Objekt mit einer Reihe
von Schlüssel-Wert-Paaren gespeichert einem Objekt mit einer Reihe
von Schlüssel-Wert-Paaren
9. HTTP-GET-Anfragen beherrschen: Mir geht es gut. Lassen Sie uns nun
einen neuen Endpunkt implementieren , um einen einzelnen Kurs
vom Server abzurufen. Lassen Sie uns das zunächst wieder in
Kurse
ändern und den
ID-Parameter hier hinzufügen. Okay,
lassen Sie uns jetzt oben ein Array
namens Courses definieren. Also konstante Kurse. Wir haben das auf ein Array eingestellt. Und in diesem Array
werden wir drei
Kursobjekte haben. Also sollte jedes Objekt ein paar
Eigenschaften
haben , eine ID und einen Namen. Und natürlich können wir mehr haben. Aber der Einfachheit halber werde ich mich hier
nur auf
zwei Eigenschaften beschränken. Okay, jetzt duplizieren wir
diese Zeile und ändern die IDs sowie die
Namen zwei und drei. Wir haben also zwei Endpunkte, einen für alle Kurse und den anderen für einen
einzigen Kurs, richtig? Im ersten Fall werden
wir unser Kursangebot
zurückgeben. Okay? Nun, in der zweiten sollten
wir eine
Logik schreiben, um nach
dem Kurs mit einer bestimmten
ID zu suchen . Also lass mich das löschen. Zuerst gehen wir
zu den Kursen Punkt FIE. Dies ist eine Methode
, die für jedes Array in JavaScript verfügbar
ist . Als Argument für diese Methode müssen
wir eine Funktion übergeben. Diese Funktion
wird verwendet, um
einen Kurs zu finden , der
einem bestimmten Kriterium entspricht. Wir verwenden also die Syntax der
Pfeilfunktion. T geht zu, und hier
schreiben wir eine Logik, die einen booleschen
Wert zurückgibt Dieser boolesche Wert bestimmt, ob dieser Kurs der ist, nach dem
wir suchen Die C-ID sollte also der Punkt-ID der
Anfrage entsprechen. Diese Anforderung, dass
Pam ID, jedoch eine Zeichenfolge zurückgibt. Damit dieser
Vergleich also richtig funktioniert, müssen
wir diese
Zeichenfolge in eine Ganzzahl übergeben Also rufen wir pasen auf
, eine der
globalen Funktionen, die in Javascript
verfügbar sind, und rufen dann das
Ergebnis ab und speichern es in einer Konstante namens quote Jetzt können wir entweder let oder constant
verwenden. Wir verwenden let, wenn Sie
eine Variable definieren möchten , die wir
später zurücksetzen können , und wir verwenden constant, wenn wir eine Konstante definieren
möchten. In diesem Fall möchte ich den Kurs nicht später
in dieser Funktion
zurücksetzen, aber auch hier ist es völlig in
Ordnung, let zu verwenden. Es ist nur eine persönliche Präferenz. Wir bekommen das Kursobjekt. Wenn dieser Kurs nun
keinen Wert hat, mit anderen Worten, wenn wir keinen Kurs mit
einer bestimmten ID finden, sollten
wir konventionell eine Antwort mit
dem TDP-Statuscode
vier oder vier zurückgeben dem TDP-Statuscode
vier oder vier Das bedeutet, dass das Objekt nicht gefunden wurde. Das ist also eine der
Konventionen für erholsame ABIs. Wenn der Client
nach einer Ressource fragt, diese Ressource
aber
nicht auf dem Server existiert, sollten
wir eine Antwort
mit dem Statuscode
vier oder vier zurückgeben mit dem Statuscode
vier oder vier also
den Antwortstatus vier oder vier zurück, und optimalerweise können wir auch eine Nachricht an
den Client
senden. Der Kurs mit der
angegebenen ID wurde also nicht gefunden. Okay? Nun, andernfalls, wenn wir eine
Kurs-ID mit dieser ID haben, wir sie einfach an den Kunden
zurück. Also antworte Punkt SN-Kurs. Lassen Sie uns das jetzt testen. B im Browser,
lass uns
zu
Slash-API-Slash-Kursen mit Schrägstrich eins übergehen zu
Slash-API-Slash-Kursen mit Schrägstrich Wir haben also einen Kurs mit der ID eins, und deshalb erhalten wir dieses
SN-Objekt in der Antwort Okay, wenn ich es auf
zehn ändere, bekommen wir diese Nachricht. Der Kurs mit der angegebenen
ID wurde nicht gefunden. Und um sicherzustellen, dass
der Statuscode dieser Antwort vier oder vier ist, können
wir sie über die
Entwicklertools öffnen. Klicken Sie also mit der rechten Maustaste auf Löschen und
gehen Sie zur Inspektion. dann auf der Registerkarte Netzwerk
sicher, dass Sie hier keinen Filter
haben, wählen Sie alle aus und aktualisieren Sie dann
die Seite, indem Sie
Strg R unter Windows
oder Befehl R auf Mac drücken . Also hier ist eine Anfrage, die
wir an den Server senden. Sie können sehen, dass der
Statuscode vier oder vier ist, was bedeutet, dass nicht gefunden wurde.
10. POST-Anfragen effektiv bearbeiten: Bisher haben wir zwei Routen
erstellt, die auf sttpgrQuest antworten Und wir verwenden diese Routen, um alle Kurse
sowie einen In dieser Vorlesung
werde ich Ihnen beibringen, wie Sie sttpPostrQuest reagieren können Wir verwenden also eine TTP-Post-Anfrage, um einen neuen Kurs
zu erstellen,
also App Dot Post . Anstelle der G-Methode verwenden
wir die Post-Methode Jetzt müssen
wir, ähnlich wie bei der G-Methode, eine App angeben Das sollte also
EBS-CSS mit Schrägstrich sein, weil wir mit einer
Sammlung von Kursen posten
werden Deshalb verwende ich hier einen
Pluralnamen. Dann brauchen wir unseren Route-Handler, damit Anfrage und Antwort an Card Black
gehen In diesem Route-Handler müssen
wir
das Kursobjekt lesen , das sich im
Hauptteil der Anfrage befinden
sollte. Verwenden Sie seine Eigenschaften, um
ein neues Kursobjekt zu erstellen und dieses Kursobjekt
dann
zu unserem Kursarray hinzuzufügen. Lassen Sie uns ein neues
Kursobjekt erstellen. Konstanter Kurs. Auch hier verwende ich eine
Konstante, weil
wir dieses Kursobjekt später nicht zurücksetzen Lassen Sie uns das also
auf ein neues Objekt setzen. Da wir hier nicht mit einer Datenbank
arbeiten, müssen
wir nun manuell eine ID
zuweisen. Also ID, und wir erhalten die Anzahl der Elemente
in unserem Kursarray, also die Punktlänge der Kurse, und fügen einfach eins hinzu. Wenn wir in Zukunft mit einer Datenbank
arbeiten, wird
die ID
von der Datenbank zugewiesen. Als nächstes folgt die Namenseigenschaft. Jetzt müssen wir das aus
dem Hauptteil der Anfrage lesen. Fordern Sie also den Punktkörper und den Punktnamen an. Hier gehe ich also davon aus, dass
wir
im Hauptteil der Anfrage ein Objekt haben und dieses
Objekt eine Namenseigenschaft hat. Damit
diese Zeile funktioniert, müssen
wir nun das
Parsen von JSN-Objekten
im Hauptteil der Anfrage aktivieren ,
da
diese Funktion in Express standardmäßig nicht
aktiviert ist Nachdem
wir das App-Objekt erhalten haben, müssen
wir oben app.us aufrufen und
hier rufen wir Nun, das mag für Sie ein
bisschen seltsam
oder ungewohnt aussehen ,
aber machen Sie sich keine Später in diesem Abschnitt werden
wir dies im Detail untersuchen Im Grunde fügen
wir hier eine Middleware hinzu Wenn wir also die
Express Jin-Methode aufrufen, diese Methode eine
Middleware zurück Und dann rufen wir App auf, um
diese Middleware in der Pipeline zur Anforderungsverarbeitung zu verwenden diese Middleware in Auch
darauf werden wir später
in diesem Abschnitt näher eingehen Also zurück zu unserem neuen Route-Handler, wir haben ein Kursobjekt Als Nächstes fügen wir es in unser Array ein, sodass Kurse den Kurs verschieben Und schließlich, wie üblich, sollten
Sie, wenn wir ein
Objekt an den Server senden, wenn der Server ein neues
Objekt oder eine neue Ressource erstellt, wenn wir ein
Objekt an den Server senden,
wenn der Server ein neues
Objekt oder eine neue Ressource erstellt, dieses Objekt
im Hauptteil der Antwort zurückgeben . Also Antwort Punkt SN-Kurs. Der Grund dafür ist, dass wir dieses
D auf dem Server zuweisen Wir müssen dieses
Kursobjekt an den Client zurückgeben ,
da der Client wahrscheinlich die ID für
dieses neue Objekt oder
diese neue Ressource kennen muss dieses neue Objekt oder
diese neue Ressource So behandeln wir also
HTTP-Post-Anfragen. In der nächsten Vorlesung werde
ich Ihnen
zeigen, wie Sie diesen Endpunkt
testen können.
11. Endpunkte mit Postman testen: Ordnung, um
SDDP-Dienste aufzurufen, werden
wir die Postman-API verwenden Also, wenn Sie Postman noch nicht
benutzt haben,
postman.com und laden Sie die App auf Ihr System herunter Gehen Sie also oben rechts zum
Produkt und starten Sie den Download. Öffnen Sie nach dem Herunterladen diese Datei und installieren Sie sie wie folgt in Ihrem
System. Sobald Sie fertig sind, können Sie
Postman wie jede andere
App in Ihrem System öffnen Postman wie jede andere
App in Ihrem System Hier werden Sie möglicherweise aufgefordert,
sich für ein Konto anzumelden, aber Sie müssen dies nicht tun Da wir lokal arbeiten, können
wir ein
Scratchpad verwenden, okay Jetzt können wir auf dieser Seite eine neue
TTB-Anfrage erstellen. In diesem Drop-down-Menü stellen
wir den Typ also auf
eine Post-Anfrage ein Sie geben die URL hier ein. In diesem Fall ist das
TDP, lokaler Host. Auf meinem Computer verwende ich
Port 3.000, um
diese Anwendung, APIs Courses, zu hosten diese Anwendung, APIs Courses, Jetzt müssen wir den Text
dieser Anfrage aus dieser Liste
auswählen, Pro und dann JSN Damit können wir
ein JSN-Objekt in den
Hauptteil der Anfrage einfügen ein JSN-Objekt in den
Hauptteil der Anfrage Fügen wir hier also ein Objekt hinzu
und geben ihm einen Namen Rape. Per Name haben wir das auf einen neuen
Kurs gesetzt und dann endlich losgelegt. Sie können sehen, dass
der Status dieser Anfrage 200 ist, was bedeutet, dass die Anfrage erfolgreich bearbeitet
wurde. Und hier ist der Hauptteil
der Antwort. Die ID ist also vier, weil wir
jetzt vier
Kurse in unserem Array haben, und das ist derselbe Name
, den wir an den Server senden. So testen wir
HTTP-Dienste mit Postman. In dieser Implementierung sind
wir nun davon ausgegangen, dass
sich im Hauptteil
der Anfrage ein Objekt mit einer Namenseigenschaft befindet Was passiert, wenn der Client
vergisst,
diese Eigenschaft zu senden , oder
einen ungültigen Namen sendet, vielleicht einen Namen
, der zu kurz ist Hier
kommt die Eingabevalidierung ins Spiel, und das ist das Thema
der nächsten Vorlesung
12. Absicherung Ihrer App mit Eingabevalidierung: In diesem Vortrag werde
ich
Ihnen zeigen, wie Sie die Eingabevalidierung durchführen Aus Sicherheitsgründen sollten
Sie also niemals dem vertrauen, was der Kunde Ihnen sendet. Sie sollten die Eingabe immer
validieren. in diesem speziellen Beispiel Da wir es in diesem speziellen Beispiel
mit einem einfachen Objekt
zu tun haben, das nur eine Eigenschaft hat
, nämlich den Namen, können
wir eine
Validierungslogik wie diese schreiben. Ich fordere also an, dass der
Punktname nicht
existiert oder Länge des Punktnamens für den Punktkörper weniger als drei
beträgt Dann geben wir dem Client
einen Fehler zurück. Die RESTful-Konvention besteht
darin, eine Antwort mit
dem Statuscode 400 zurückzugeben dem Statuscode 400 Das bedeutet PAD-Anfrage. Dazu rufen wir den
Antwortstatus 400 und können dann
eine Fehlermeldung senden. In diesem Fall können wir
eine generische Fehlermeldung wie
Name ist erforderlich schreiben eine generische Fehlermeldung wie und sollte mindestens drei Zeichen lang
sein. In Ihrer Implementierung möchten
Sie möglicherweise die Fehler
unterscheiden. Wenn der Client beispielsweise die Eigenschaft name
nicht gesendet hat, würden Sie
vielleicht einfach
mit der Angabe „Name is required“ antworten. Oder wenn der Name gesendet wurde, der Name
aber
nicht lang genug war, könnten
Sie eine
andere Fehlermeldung senden. Dann kehren wir endlich hierher zurück, weil wir nicht möchten, dass
der Rest der Funktion ausgeführt wird. Das ist eine Grundidee. In
der realen Anwendung ist
es jedoch wahrscheinlicher, dass Sie mit einem
komplexen Objekt arbeiten, etwas komplexeres als
diesem Kursobjekt hier. Sie möchten keine
komplexe Validierungslogik
wie diese am Anfang
Ihres Route-Handlers schreiben . Lassen Sie mich also ein
Node-Paket vorstellen, das
es Ihnen wirklich einfach macht , die Eingabe
zu validieren. Also, wenn du bei Google mit I
nach NPM Joy suchst, schau mal, hier ist der erste Link Hier kannst du also sehen, dass es wöchentlich
über 8 Millionen Downloads gibt wöchentlich
über 8 Millionen Downloads Es ist ein sehr beliebtes Paket. Lassen Sie mich Ihnen nun zeigen, wie
Sie
diese Validierungslogik durch Joy ersetzen können. Also zuerst, zurück im
Terminal, lassen Sie uns Joy installieren. Zum Zeitpunkt der
Aufnahme dieses Videos ist
die neueste Version Version 17.9 0.2 Wenn Sie
sicherstellen möchten, dass wir genau
die gleiche Erfahrung wie das, was ich Ihnen in diesem Video
zeigen werde, dann installieren Sie genau diese Version Also installiert NPM Hoy
bei 17.9 0.2, okay? Jetzt, zurück im Code oben, müssen
wir dieses Modul laden Also brauche Joy, erhalte das Ergebnis
und speichere es in einer Konstante namens Joy mit J , denn was aus
diesem Modul geschrieben wird, ist eine Klasse. Und wie ich Ihnen
bereits gesagt habe, verwenden
wir in JavaScript die Pascal-Namenskonvention, um unsere Klassen zu benennen Der erste Buchstabe jedes
Wortes sollte also ein Großbuchstabe sein. sich außerdem bewährt, alle erforderlichen
Pausen über diese Datei zu
setzen Auf diese Weise können Sie
leicht erkennen,
welche Abhängigkeiten
dieses Modul hat. Dieses Modul-App-Modul ist also von zwei Modulen
abhängig. Einer ist Joy, der
andere ist Express. Wir haben diese Joy-Klasse jetzt
wieder in unserem Route-Handler. Jetzt müssen
wir mit Joy zuerst ein Schema definieren. Ein Schema definiert die
Form unserer Objekte. Welche Eigenschaften
haben wir in diesem Objekt? Was ist der Typ
der einzelnen Eigenschaften? Haben wir eine E-Mail?
Haben wir eine Zeichenfolge? Was ist die minimale oder
maximale Anzahl von Zeichen? Haben wir eine Zahl? In welchem Bereich
sollte diese Zahl liegen? Das ist also ein Job von Schema. Also hier werde
ich zuerst ein Schema definieren. Beim gesendeten Schema
setzen wir es auf ein Objekt. Dies ist die Form
unseres Kursobjekts. Hier wollen wir also eine Namenseigenschaft
haben und setzen diese auf
Joy Dot String. Also teilen wir Joy mit
, dass es sich um eine Zeichenfolge handelt, die
mindestens drei Zeichen lang sein sollte und dass sie erforderlich sein sollte. Es hat also eine sehr flüssige API. Auch hier können Sie sich
die Dokumentation ansehen , um
alle Methoden zu sehen , die Ihnen zur Verfügung
stehen Also hier ist unser Schema. Jetzt rufen wir Schema Dot Validate und fordern es im Hauptteil an. Jetzt gibt diese Validierungsmethode ein Objekt
zurück. Speichern wir das in einer
Konstante namens result. Für diese Demo werde ich dieses Ergebnis auf der Konsole
protokollieren. Sie uns das sagen, bevor wir weitermachen Lassen Sie uns das sagen, bevor wir weitermachen, gehen wir
zurück zum Postboten Lassen Sie uns einen weiteren Kurs erstellen. Jetzt zurück im Terminal. Das ist also unser Ergebnisobjekt. Es hat zwei Eigenschaften,
Fehler und Wert. Nur eine davon
kann einen Wert haben. Da wir also in diesem Fall ein gültiges Kursobjekt
senden, haben
wir dieses Objekt hier
als Wert der Werteigenschaft. Wenn Sie ein ungültiges Objekt senden, Wert Null und es wird ein
Fehler gesetzt.
Lass es mich dir zeigen. uns also die Postboten anschreiben, lassen Sie uns die Namenseigenschaft entfernen Jetzt zurück ins Terminal schicken. Okay, schau, hier ist
das Ergebnisobjekt. Das ist die Fehlereigenschaft. Sie ist auf ein Objekt gesetzt, bei dem ein Validierungsfehler aufgetreten
ist. Name ist erforderlich. Also
zurück zu einem Route-Handler Anstatt dieser manuellen
Validierungslogik können
wir den Wert der Eigenschaft
result thot error überprüfen Wenn also dieser Fehler
auftritt, senden wir eine
Antwort mit dem Statuscode 400 und im
Hauptteil der Antwort Im Moment können wir einfach den
Ergebnispunktfehler hinzufügen, okay? Und Sie benötigen dieses
Konsolen-Punktprotokoll nicht mehr. Sag. Jetzt, zurück in Postman, werde
ich noch einmal dieses leere Objekt verschicken Jetzt sieh dir die Antwort an. Also das bekommen wir. Ein Objekt mit diesen Eigenschaften. Originaldetails, bei denen es sich
um eine Reihe von Fehlermeldungen handelt. Also hier ist die erste Nachricht. Name ist erforderlich. Jetzt ist dieses Objekt zu
komplex, um die Art zu senden. Vielleicht
möchtest du das vereinfachen. Zurück im Code besteht
eine einfache Lösung
darin, zum Details-Array zu wechseln, das erste Element
abzurufen und dann auf die
Nachrichteneigenschaft zuzugreifen. Anstatt also
das erste Element zu verwenden, möchten
Sie vielleicht auf alle
Elemente in diesem Array zugreifen, ihre Nachrichteneigenschaft
abrufen
und sie verketten Das liegt ganz bei dir. Sparen Sie also noch einmal, lassen Sie uns eine ungültige Anfrage senden, und jetzt erhalten wir, dass der Name erforderlich ist. Wenn Sie zu unserer Anfrage gehen
und die Eigenschaft name hinzufügen, sie
aber an eine Zeichenfolge senden
, die nur aus einem Zeichen besteht, erhalten wir
jetzt einen anderen Fehler. Die Länge des Namens muss mindestens
drei Zeichen lang sein. Sie können also sehen, dass Joy
es wirklich einfach macht,
die Eingabe zu validieren und dem Client die
richtigen Fehlermeldungen
zurückzugeben .
13. Die Kunst der HTTP-PUT-Anfrage: Ordnung. Nun wollen wir sehen,
wie wir einen Kurs aktualisieren können. Lassen Sie uns eine neue
Route-Handler-App hinzufügen. Wir verwenden die Put-Methode
zum Aktualisieren von Ressourcen. Jetzt sollte der Teil
Slash-API-Slash-Kurse lauten. Und hier brauchen wir
einen Routenparameter weil wir es
mit einem bestimmten Kurs zu tun haben Also ID, jetzt stehen
Route-Handler-Funktion, Anfrage und Antwort
auf „Quod Black Ordnung. Nun, hier ist die
Logik, die wir implementieren müssen. Zuerst müssen wir
diesen Kurs mit einer bestimmten ID nachschlagen. Also schlage den Kurs nach. Wenn der Kurs nicht existiert, wenn er nicht existiert,
müssen wir vier oder vier zurückgeben. Das bedeutet, dass die Ressource nicht gefunden wurde. Andernfalls müssen wir den Kurs
validieren und
sicherstellen, dass er in einem guten Zustand ist. Falls gültig, müssen wir einen 400-Fehler
zurückgeben, was eine Pat-Anfrage bedeutet. Wenn du herkommst,
heißt das, dass alles in Ordnung ist. Also aktualisieren wir den Kurs und geben den aktualisierten
Kurs an den Kunden zurück. Diese Logik
müssen wir implementieren. Wir haben bereits Code
, den wir hier wiederverwenden können. Ich werde nicht
alles von Hand tippen. Ich werde etwas Code
von unseren anderen Route-Handlern kopieren von unseren anderen Route-Handlern Zuerst wollen wir den Kurs
nachschlagen und wenn er nicht existiert, wollen
wir einen Fehler von
vier oder vier zurückgeben Dafür gehe ich zu diesem anderen Route-Handler,
wo wir einen einzigen Kurs bekommen. Das ist eine Logik, an der wir interessiert
sind. Wir suchen nach dem Kurs
und wenn er nicht existiert, geben wir einen Fehler von vier oder vier zurück. Also kopiere diese beiden Zeilen, wir
sind mit dem ersten Teil fertig. Im zweiten Teil dreht sich
alles um Validierung. Dafür gehe ich zu
unserem Post-Endpunkt. Hier müssen wir also das Schema
sowie diese Zeile zur
Validierung des
Anforderungstexts mit
Joy
kopieren sowie diese Zeile zur Validierung des
Anforderungstexts mit und den Code, der
400 zurückgibt, wenn er ungültig ist Bei diesem Ansatz gibt es jedoch ein Problem. Das Problem ist, dass
wir in diesem Fall ein sehr einfaches Schema haben. Was ist, wenn Sie es mit
einem komplexen Objekt mit einer ganzen Reihe
von Eigenschaften zu tun haben? Dann würde unsere
Validierungslogik auf verschiedene
Routen und Ladungen
dupliziert Also lassen Sie uns das
Boot vorerst einfach kopieren und dann kommen
wir zurück und überarbeiten es, um
es besser zu machen Also kopiere diese Zeilen
und füge sie hier ein. Wir validieren also, und wenn Sie einen
Fehler im Ergebnis haben, wir
diesen 400-Fehler zurück Das ist also unser zweiter Teil. Wir haben das Schema, wir validieren es, und wenn wir einen Fehler haben, geben
wir den 400-Fehler zurück. Wir sind mit dem zweiten
Teil fertig. Jetzt der dritte Teil. An dieser Stelle
haben wir also ein Kursobjekt. Wir können seine Eigenschaften aktualisieren, also natürlich Punkt nem, wir stellen das so ein, dass Punkt P Punkt
angefordert wird. Und wenn wir andere Eigenschaften
haben, legen
wir sie natürlich auch hier fest. Wir sind damit fertig, den Kurs zu
aktualisieren, und schließlich müssen wir den aktualisierten
Kurs an den Client
zurückgeben. Antwort Punkt CN-Kurs. So gehen wir mit
einer StdbPutrQuest um. Nun habe ich Ihnen gesagt, dass wir diese Validierungslogik dupliziert
haben Ich werde
diese wenigen Zeilen in eine
separate Funktion extrahieren , die wir sowohl in diesem Route-Handler
für die Bearbeitung einer sttpPutRquest
als auch in der anderen, die wir in
der letzten Lektion zum Erstellen
eines Kurses geschrieben haben,
wiederverwenden können sowohl in diesem Route-Handler
für die Bearbeitung einer sttpPutRquest
als auch in der anderen, die wir in
der letzten Lektion zum Erstellen
eines Kurses geschrieben haben,
wiederverwenden für die Bearbeitung einer sttpPutRquest
als auch in der anderen, die wir in
der letzten Lektion zum Erstellen
eines Kurses geschrieben haben letzten Lektion Lassen Sie uns nun hier eine
Funktion definieren und nennen Wir geben ihr ein Kursobjekt. In dieser Funktion
sollten wir nun sowohl das Schema
als auch diese Zeile zur
Validierung des Kurses haben als auch diese Zeile zur
Validierung des Kurses Also schneide diese paar
Zeilen aus und füge sie hier ein. Anstatt den Hauptteil der
Anfrage zu validieren, werden
wir nun das Argument validieren , das
an diese Methode übergeben wurde, also
das Kursobjekt Schließlich können wir
dieses Ergebnis einfach an den Aufruf zurückgeben. Es ist nicht notwendig, eine Konstante zu
definieren. Mit dieser neuen Implementierung haben
wir also die gesamte
Validierungslogik an einem Ort. Jetzt
können wir das wiederverwenden. Also hier ist unsere Put-Methode. Wir definieren ein konstantes Aufrufergebnis und stellen es so ein, dass es den Kurs validiert. Und als Argument
übergeben wir den Hauptteil der Anfrage. Jetzt können wir diesen Code
etwas sauberer und kürzer machen etwas sauberer und kürzer indem wir die
Funktion zur Objektdestrukturierung in modernem Javascript verwenden Funktion zur Objektdestrukturierung in modernem Javascript Schauen Sie, hier erhalten wir dieses
Ergebnisobjekt und greifen an zwei verschiedenen Stellen auf die
Ergebnispunktfehlereigenschaft zwei verschiedenen Stellen Da wir nur an dieser Fehlereigenschaft
interessiert sind, können
wir sie mithilfe der
Objektstrukturierung erreichen. Lassen Sie mich also
diese Zeile duplizieren und Ihnen
zeigen, wie die
Destrukturierung von Objekten funktioniert Bei der Objektstrukturierung beim Deklarieren einer
Variablen oder Konstanten Culebrass hinzu und dann fügen
wir hier die Eigenschaft
des In diesem Fall hat das
Zielobjekt, das von
unserer gültigen Kursmethode zurückgegeben wird, also hat das
Zielobjekt, das von
unserer gültigen Kursmethode zwei Eigenschaften: Fehler und Wert In diesem Fall
wollen wir nur die Fehlereigenschaft. Also haben wir das
zwischen die Cul-Zahnspange gelegt. Das ist also gleichbedeutend mit einem
Punktfehler beim Ergebnis. Wir verwenden diese Notation. Okay. müssen
wir
den Ergebnisfehler nicht an verschiedenen Stellen
wiederholen . Wir können einfach Fehler verwenden, okay? Das ist also eine Destrukturierung von Objekten. Jetzt brauchen wir diese
erste Zeile nicht mehr. Und schließlich, bevor wir diesen Vortrag
beenden, müssen
wir noch eine
Änderung an diesem Code vornehmen. Wir müssen also diese neue
Methode zur Validierung eines Kurses im
Route-Handler verwenden , um
unsere STTP-Post-Anfrage Also kopiere, das ist unser Handler
für die Erstellung eines neuen Kurses. Wir müssen das Schema hier also nicht
verwenden. Wir verlagern diese ganze Logik in
unsere Funktion „Kurs validieren“. Ich werde
das löschen und
den Code einfügen , den wir
von der anderen Methode kopiert haben Also rufen wir den Validate-Kurs auf, verwenden die Syntax zur Objektstrukturierung und wenn Sie einen
Fehler haben, geben wir
die 400-Antwort an den Client zurück . Lassen Sie uns nun endlich
unseren neuen Endpunkt für die
Aktualisierung eines Kurses testen . Jetzt, zurück in Postman, müssen
wir den Typ
dieser STDP-Anfrage
ändern, die URL ändern und eine
gültige Kurs-ID wie eine hinzufügen Hier haben wir ein
gültiges Kursobjekt , dessen Name auf neuer Kurs gesetzt Wir erhalten
also eine 200-Antwort, die
erfolgreich ist, und hier ist
der aktualisierte Wenn Sie also einen neuen Tab öffnen
und eine TPG-Anfrage
an lokalisierte API-Kurse senden , sollten
Sie die
Liste unserer Kurse sehen Erster Kurs, sein
Name wird aktualisiert. Perfekt. Lassen Sie uns nun
die anderen Szenarien testen. Was ist, wenn wir eine ungültige ID senden? Wir zehn. Der Kurs mit
der angegebenen ID wurde nicht gefunden, und Sie können sehen, dass die Antwort
vier oder vier lautet , was
bedeutet, dass nicht gefunden wurde. Was ist abschließend, wenn wir eine gültige
Kurs-ID, aber ein ungültiges Kursobjekt
senden ? Also werde ich
die Namenseigenschaft
S entfernen, sodass wir sehen können, dass wir eine
fehlerhafte Anfrage oder einen 400-Fehler haben. Und hier ist die Fehlermeldung. Name ist erforderlich. Als Nächstes zeige ich
Ihnen, wie Sie
mit SDDP-Löschanfragen umgehen
14. DELETE-Anfragen richtig ausführen: Und von allen
CRD-Operationen, die wir implementiert haben, haben wir
erstellt, gelesen und aktualisiert In diesem Vortrag
werde ich Ihnen zeigen, wie
Sie auf HTDP-Löschanfrage antworten Es ist sehr einfach und ähnelt
dem, was wir bisher gemacht haben. Also hier ist unser App-Objekt. Wir nennen das Löschmethode. Geben Sie ihr einen Pfad, der Slash-API-Kurse
lautet. Und natürlich
benötigen wir einen Parameter, weil wir
mit einem bestimmten Kurs arbeiten Dann geht unsere Route-Handler-Anfrage und Antwort
an den Cord-Block. Hier müssen
wir zuerst den Kurs nachschlagen, einen Kurs mit einer bestimmten ID. Wenn er nicht existiert,
müssen wir vier oder vier zurückgeben. Andernfalls werden
wir es löschen. Und laut Konvention geben Sie denselben Kurs
zurück, den Kurs, der gelöscht wurde. Also werde ich mir wieder Code von anderen
Route-Handlern
ausleihen Code von anderen
Route-Handlern
ausleihen um den Kurs nachzuschlagen und einen Vier-oh-Vier-Fehler
zurückzugeben Lassen Sie mich zu
unserem Route-Handler
für die STP-Put-Anfrage zurückkehren für die STP-Put-Anfrage Diese ersten beiden
Zeilen dienen also dazu,
den Kurs nachzuschlagen und
einen Vier-oh-Vier-Fehler zurückzugeben Also kopiere diese beiden Zeilen
hierher zurück . Das ist unser erster Teil. Um nun einen Kurs zu löschen, müssen
wir zunächst den Index
dieses Kurses in unserem
Kursarray finden . Also
natürlich den Punktindex der Kurse, wir rufen den Index ab, speichern ihn in einer Konstante und dann können wir mit
der Splice-Methode ein Objekt aus
unserem Kursarray
entfernen Also Courses dot Splice, wir gehen zu diesem Index
und entfernen ein Objekt Das ist also ein Teil zum Löschen. Und schließlich müssen wir
die Antwort auf die Behauptung zurückgeben. Also Antwort, die
dieses Kursobjekt gesendet hat. Lassen Sie uns das jetzt testen. Tasche in Postman,
ändern wir, setzen wir auf Löschen. Zuerst möchte ich eine
ungültige Kurs-ID wie
zehn s schicken , sodass wir die Fehlermeldung „
Vier oder Vier“ erhalten, mit dieser Nachricht
nicht gefunden wurde Perfekt. Lassen Sie uns jetzt die erste Geldbörse
löschen Kurs mit ID eins. Dann erhalten wir dasselbe
Kursobjekt in der Antwort. Und wenn wir zu unserem zweiten Tab gehen wo wir die
Liste unserer Kurse haben, senden
wir diese noch einmal. Okay, hör mal, wir
haben unsere erste Geldbörse nicht mehr. Wir haben nur Kurse
mit Ausweis zwei und drei. Ordnung. Bevor
wir weitermachen, schauen Sie sich den Handler an, um auf eine Put-Anfrage zu
antworten. Wenn ein Fehler auftritt, besteht
eine kürzere Möglichkeit, denselben Code
zu schreiben, darin, die Rückgabe hier
einzufügen, und dann
benötigen wir keinen Codeblock. Wir können alles
in eine Zeile schreiben. Schauen
wir uns nun endlich den Handler für
GDP-Post-Requests an. Hier ist er. Auch hier werde ich dieselbe Technik verwenden,
um diesen Code zu bereinigen. Wenn wir also einen Fehler haben, kehren
wir einfach zurück und beseitigen das zusätzliche Rauschen in diesem
Code. Das ist viel besser.
15. Projekt: FareWheels App: Ordnung. Jetzt ist es
Zeit für eine Übung. Ab diesem Vortrag
werden wir also damit beginnen,
die Backend-Services für unsere
Fair Wheels-Anwendung zu entwickeln die Backend-Services für unsere
Fair Wheels-Anwendung Wie ich Ihnen
bereits sagte,
ist Fair Wheels ein imaginärer Service
zur Vermietung Während dieses Kurses werden
wir also Stück für Stück das Backend
von Fair Wheels
aufbauen Stück das Backend
von Fair Wheels Unsere erste Aufgabe besteht darin,
einen Dienst für die
Verwaltung der Liste der Autofirmen
oder -hersteller einzurichten. Jedes Auto hat also einen Hersteller
wie General Motors, Tesla, Ord usw. Wir sollten einen Endpunkt haben,
um die Liste
aller Unternehmen abzurufen, weil wir
vielleicht
irgendwo in unserer
Client-Anwendung eine Drop-down-Liste
haben der der Benutzer ein Unternehmen
auswählen kann. Wir brauchen also einen Endpunkt,
um alle Unternehmen zu finden. Wir sollten auch in der Lage sein,
ein neues Unternehmen hinzuzufügen sowie ein bestehendes zu
aktualisieren oder zu löschen. Bevor wir also weitermachen, möchte
ich, dass Sie das, was Sie bisher
gelernt haben , in die Praxis umsetzen, und das wird auch
Ihre Aufgabe sein. Also, auch wenn Sie ein
erfahrener Entwickler sind, sollten nicht nein sagen oder auch nur eine Ausrede
vorbringen. Ich weiß, wie das geht.
Das ist so einfach. Ich weiß, dass es einfach ist,
aber was jetzt wichtig ist, dass ich möchte, dass du
dich an diese Syntax gewöhnst. Machen Sie also weiter, starten Sie ein neues
Projekt von Grund auf neu, alles trägt Räder und erstellen Sie diesen TDP-Service für
die Verwaltung der Firmenliste