‫Kursleiter:
‫In dieser Vorlesung lernen
‫Sie also eine einfache Möglichkeit, Parameter direkt in der
‫URL zu definieren, diese Parameter dann
‫zu lesen und auch darauf zu reagieren.
‫Was wir nun in diesem Vortrag konkret umsetzen wollen,
‫ist eine Möglichkeit, nur eine Tour zu bekommen.
‫Im Moment haben wir also diesen Endpunkt
‫hier, der uns alle
‫Touren gibt, und wir wollen so etwas haben.
‫Also kopieren wir es erstmal in eine neue Anfrage, und
‫dann wollen wir einen Schrägstrich und dann die ID der Tour.
‫Sagen wir zum Beispiel fünf, okay?
‫Das ist also genau das, worüber
‫wir in der REST-API-Vorlesung gesprochen haben,
‫wo ich gesagt habe, dass wir alle Touren erhalten, wenn wir diesen Endpunkt
‫ohne ID erreichen, also
‫genau so hier, nun ja.
‫Aber wenn wir danach eine ID angeben würden, also
‫einfach so, und es
‫muss natürlich keine ID sein, es
‫kann ein beliebiger eindeutiger Identifikator sein, aber
‫in diesem Fall ist es am einfachsten, ihn
‫einfach zu implementieren Benutze Ausweise, okay?
‫Das ist hier also natürlich eine Variable, denn
‫es kann fünf sein, aber es kann auch alles andere sein.
‫Und dieses Stück der URL hier,
‫also das hier, das ist eine Variable, okay?
‫Was wir also
‫tun müssen, ist eine Route zu definieren, die eine Variable akzeptieren kann.
‫In Ordnung, und das machen wir hier
‫und eigentlich gleich nach diesem.
‫Und ich werde es einfach kopieren, weil
‫Sie zu diesem Zeitpunkt bereits wissen, wie man es schreibt.
‫Und so, ja.
‫Hier haben wir also
‫die Route, und jetzt müssen wir nur noch diese Variable hinzufügen.
‫Und das ist ganz einfach.
‫Wir haben also wieder unseren Schrägstrich und dann
‫die Variable, wir definieren sie mit einem Doppelpunkt, wie folgt.
‫Und so haben wir eine Variable namens ID erstellt.
‫Es könnte natürlich alles
‫andere sein, wie var oder X.
‫Ist eigentlich egal.
‫Aber dieser hier heißt ID, in Ordnung?
‫Jetzt wollen wir so etwas nicht zurückschicken, also
‫kommentieren wir es einfach aus.
‫Und was ich möchte,
‫dass Sie sich
‫das Konsolen-Dot-Log, req dot params ansehen.
‫Okay, in request dot params werden also alle Parameter
‫aller Variablen gespeichert, die wir hier definieren, okay?
‫Diese Variablen hier in der URL werden also Parameter genannt,
‫und sie sind wieder in req dot
‫params, die wir jetzt verwenden können.
‫Werfen wir also jetzt einen Blick darauf
‫und führen diese Anfrage tatsächlich aus.
‫Und im Moment wird es nichts
‫tun, also wird es uns natürlich nicht
‫automatisch Tour Nummer fünf geben.
‫Aber was ich jetzt machen
‫möchte, ist nur einen Blick auf req dot params zu werfen.
‫Und hier haben wir tatsächlich die ID fünf.
‫Request dot params ist also ein sehr
‫schönes Objekt, das automatisch den
‫Wert unserer Variablen zuweist, also unserem Parameter, den wir definiert haben.
‫Und wir könnten tatsächlich mehrere definieren.
‫Wir könnten also ID
‫sagen, und dann könnten wir X sagen und wir
‫könnten Y sagen, und dann müssten wir natürlich alle definieren.
‫Also 23
‫und 45, sagen wir.
‫Schicken Sie diesen Typen.
‫Und dann haben wir
‫tatsächlich ein Objekt mit all diesen drei Variablen darin.
‫Okay, wenn wir sie jetzt so in der URL definieren,
‫müssen wir sie dann tatsächlich angeben.
‫Wenn wir den Y-Parameter nicht hätten,
‫würden wir auf einen
‫Fehler stoßen, weil wir jetzt nicht genau diese Route erreichen, okay?
‫Unsere Route ist also jetzt nicht mehr genau
‫diese, sondern nur diese.
‫Es liegt also ein Fehler vor, okay?
‫Sinn ergeben?
‫Jetzt gibt es tatsächlich eine Sache, die wir
‫tun können, und das sind optionale Parameter.
‫Wenn Sie diesen Parameter also optional machen möchten, fügen
‫wir ihm einfach ein Fragezeichen hinzu,
‫und jetzt ist er optional, sodass wir ihn nicht mehr angeben müssen.
‫Also einfach so.
‫Also haben wir jetzt nur noch fünf, 23, und dann ist
‫Y immer noch hier, aber es ist undefiniert, weil
‫es jetzt optional ist.
‫Gut.
‫Aber lassen Sie uns das alles
‫los, denn wir brauchen wirklich nur den Ausweis, okay?
‫Jetzt müssen
‫wir also nur noch die Tour mit dieser
‫ID aus unseren Daten ziehen. json aus unserer JSON-Datei, oder?
‫Also im Grunde aus dem Touren-Array.
‫Und das sollte nicht allzu schwer sein.
‫Sagen wir
‫also, const tour ist
‫gleich Tours dot
‫find.
‫Und ich bin mir nicht sicher, ob Sie
‫mit dieser Suchmethode hier vertraut sind.
‫Das hat also noch einmal nichts mit Node oder Express zu
‫tun, es ist nur eine normale JavaScript-Funktion, die
‫Sie auf Arrays verwenden können.
‫Und so funktioniert es.
‫Also übergeben wir hier eine Callback-Funktion und lassen
‫Sie mich damit beginnen, diese auszuschreiben.
‫Die Element-ID entspricht
‫also den req dot
‫params, okay?
‫Es wird also grundsätzlich das Array durchlaufen,
‫und in jeder
‫Iteration haben wir Zugriff auf das aktuelle
‫Element und geben in jeder
‫Iteration entweder true oder false zurück, okay?
‫Was die find-Methode nun macht, ist, dass
‫sie im Grunde ein Array erstellt,
‫das nur das Element
‫enthält, bei dem sich dieser Vergleich hier als wahr herausstellt, in Ordnung?
‫Und in dieser Situation möchten wir das Element
‫finden, dessen ID gleich der ID ist, die
‫wir aus den Parametern erhalten.
‫Durch die Angabe dieser Callback-Funktion hier mit
‫diesem Vergleich stellen wir also sicher,
‫dass nur das Element, dessen ID tatsächlich mit
‫der angegebenen ID in den Parametern
‫übereinstimmt, von der find-Methode zurückgegeben
‫und in tour gespeichert wird, in Ordnung?
‫Das wird jetzt tatsächlich nicht so funktionieren, denn wie
‫Sie hier unten
‫sehen, sind diese Werte hier eigentlich Strings, okay?
‫Wir müssen das also in eine Zahl umwandeln, aber
‫das ist sehr einfach.
‫Wir müssen nur
‫sagen, dass die ID gleich req dot params
‫dot ID mal eins ist.
‫Dies ist also ein netter Trick,
‫bei dem JavaScript, wenn wir eine Zeichenfolge, die wie eine Zahl
‫aussieht, multiplizieren, wenn wir diese mit einer
‫anderen Zahl multiplizieren, diese Zeichenfolge automatisch in eine Zahl umwandelt.
‫Das ist also ein sehr kleiner, netter Trick, den wir hier anwenden können.
‫Und so haben wir jetzt schon unsere Tour fertig zum Versenden.
‫Und so sind die Daten,
‫die wir senden möchten,
‫Touren gleich Tour.
‫Oder eigentlich ist es
‫nur Tour, also sollte Tour gleich Tour sein, in Ordnung?
‫Sinn ergeben?
‫Der vielleicht komplizierteste Teil hier ist also nur
‫dieser, aber ja, das ist wieder nur ein normales JavaScript.
‫Ich glaube oder hoffe zumindest, dass
‫Sie mit der Verwendung dieser
‫Art von Array-Methoden bereits vertraut sind, in Ordnung?
‫Wir wollen also nur Tour Nummer fünf.
‫Schauen wir uns also an, ob es tatsächlich funktioniert.
‫Und nun, das war nicht der Fall, also schauen wir uns das an.
‫Ach ja, hier brauchen wir natürlich die ID.
‫Also nicht erf. Parameter.
‫ICH WÜRDE.
‫Okay, dann versuche es noch einmal.
‫Und jetzt haben wir tatsächlich die Tour mit der ID fünf, okay,
‫und nur diese eine Tour.
‫Versuchen wir es zum Beispiel mit
‫Nummer zwei und tatsächlich mit ID zwei.
‫Aber jetzt versuchen wir es mit einer anderen Situation.
‫Machen wir, ID 23, und jetzt
‫bekommen wir nichts zurück, richtig?
‫Und das liegt daran, dass es keine Tour mit der ID 23 gibt,
‫aber wir geben trotzdem den 200 OK-Statuscode zurück, und
‫das macht also nicht viel Sinn, okay?
‫Also lasst uns tatsächlich weitermachen und das ändern.
‫Und was sollen wir hier tun?
‫Nun, als sehr vereinfachte Lösung können
‫wir überprüfen, ob die ID größer als
‫die Länge des Tour-Arrays ist, und wenn sie länger
‫ist, können wir
‫einen 404-Fehler zurücksenden, der besagt, dass wir
‫es nicht finden konnten jede Tour für die angegebene ID.
‫Machen wir also diese sehr einfache Lösung, denn dies ist nicht
‫die eigentliche API, die wir an dieser Stelle
‫erstellen, und in
‫diesem Fall ist es kein
‫Problem, eine zu einfache Lösung wie diese zu verwenden, da
‫dies nicht die echte Sache, die wir hier bauen.
‫Wir versuchen wirklich nur, uns
‫damit vertraut zu machen, dass Express funktioniert.
‫Und das gleiche kann man auch hier sagen,
‫zum Beispiel, wenn wir...
‫Hier unten, wo wir eine neue Tour veröffentlichen,
‫müssen wir in der realen Welt immer, immer überprüfen, ob
‫die Benutzereingabe gültig ist, also
‫keinen bösartigen Code enthält oder wirklich alles,
‫was wir tun. t wollen in unserer Hülle.
‫Und das machen wir natürlich später noch einmal,
‫aber in diesem kleinen Beispiel
‫hier möchte ich mich wirklich nur auf die Grundlagen konzentrieren, okay?
‫Lassen Sie uns also schnell das umsetzen,
‫was wir gerade gesagt haben, nämlich wenn die ID größer ist als die Punktlänge von
‫Touren, also sagen wir, wir haben zum Beispiel 12 Touren in unserem Array,
‫nun, wenn die ID dann 13 oder 15 ist, oder wie auch
‫immer, in diesem Fall ist die ID nicht gültig.
‫Wir sagen also Return, und das liegt daran, dass wir
‫die Funktion an dieser Stelle beenden möchten, okay?
‫Und deshalb sagen wir zurück.
‫Dann senden wir den Status 404, weil
‫wir keine Tour für diese ID finden
‫konnten, und dann eine einfache JSON-Antwort
‫mit dem Status fehlgeschlagen.
‫Fail ist also das, was wir senden, wenn wir einen 400-Code haben.
‫Und dann nur eine Nachrichteneigenschaft,
‫ungültige ID.
‫Gut.
‫Und das testen wir jetzt.
‫Also wir haben unseren 23.
‫Und tatsächlich 404 nicht gefunden, ungültige ID.
‫Das ist genau das, was wir gerade gemacht haben, und es
‫sieht so aus, als ob es funktioniert, okay?
‫Eine andere Lösung, die
‫wir natürlich auch hier
‫umsetzen könnten, wäre, diesen Test
‫einfach nach der Tour hier zu machen.
‫Also holten wir uns die ID,
‫dann versuchten wir eine Tour zu finden, und
‫wenn es keine Tour
‫gab, dann würden wir sagen, dass die ID ungültig ist.
‫Lassen Sie uns diese hier auskommentieren,
‫duplizieren, nur damit wir tatsächlich beide Lösungen hier behalten.
‫Und so können wir sagen, wenn es keine Tour gibt, okay?
‫Also im Grunde ist das
‫Ergebnis hier, wenn keine Tour gefunden wird,
‫na ja, dann ist diese Variable im Grunde undefiniert,
‫und wir können das dann hier so testen.
‫Wenn also keine Tour vorhanden ist, also Tour im Grunde
‫undefiniert ist, dann senden wir diese Fehlermeldung zurück.
‫Lassen Sie uns das also auch testen.
‫Und so erhalten wir tatsächlich das gleiche Ergebnis.
‫Okay, und einfach so
‫hast du gelernt, wie man
‫Parameter in einer URL angibt, wie hier, okay?
‫Dann haben Sie gelernt, wie Sie diese Parameter
‫aus der URL lesen, indem Sie req dot params verwenden.
‫Nun, und dann haben wir diese ID, also diesen Parameter, verwendet,
‫um eine Tour mit dieser genauen ID zu finden.
‫Das haben wir hier in dieser Zeile gemacht, okay?
‫Das war also das Ziel dieses
‫Videos, und nun kommen wir zum nächsten.