‫Kursleiter: Eine weitere
‫nette kleine Funktion, die wir einer
‫API hinzufügen können, ist die Bereitstellung einer Alias-Route für
‫eine möglicherweise sehr beliebte
‫Anfrage, die möglicherweise ständig angefordert wird.
‫Und zum Beispiel möchten
‫wir vielleicht eine Route speziell für
‫die fünf besten günstigen Touren anbieten.
‫Wenn wir also unsere reguläre Route hier
‫mit den Filtern und mit allen
‫Funktionen verwenden würden,
‫die wir bereits haben, würde die Anfrage in etwa so aussehen.
‫Also, lass uns das alles loswerden.
‫Also die fünf besten und günstigsten Touren.
‫Das heißt, wir haben ein Limit von fünf
‫und dann sortieren wir nach Bewertungen und nach Preis.
‫Also, sortieren und dann die
‫durchschnittliche Bewertung und absteigend, also minus Bewertungen Durchschnitt.
‫Und falls sie den gleichen Durchschnitt haben,
‫wollen wir den günstigsten Preis.
‫Und so werden wir auch nach dem Preis sortieren.
‫Werfen wir kurz einen Blick auf die Ergebnisse.
‫Und tatsächlich bekommen wir hier fünf Touren.
‫Und Postman macht dieses Scrollen noch einmal.
‫Wir haben also Touren mit 4. 9, 4.
‫9, 4.
‫9 wieder, 4. 8, und 4. 7.
‫Das sind also unsere fünf besten und günstigsten Touren.
‫Wenn wir am billigsten und am
‫besten sagen würden, dann müssten wir vielleicht zuerst nach dem Preis
‫sortieren, weil einige davon nicht wirklich billig sind.
‫Zum Beispiel dieser.
‫Aber wir haben zuerst den Durchschnitt ausgewählt.
‫Also sortierten wir zuerst nach dem höchsten Durchschnitt
‫und erst dann bei Gleichstand, im Grunde erst dann nach
‫dem Preis.
‫Nehmen wir an, dies ist eine Anfrage,
‫die ständig durchgeführt wird, und wir
‫möchten eine Route bereitstellen, die
‫sich der Benutzer einfach und leicht merken kann.
‫Gehen wir also zu unserer App und versuchen Sie, das zu implementieren.
‫Und wir beginnen mit ihren Routen, also Tourrouter.
‫Und dann müssen wir eine neue Route erstellen.
‫Und das machen wir hier, ganz oben.
‫Also Router. Route.
‫Und wie sollen wir diese Route nennen?
‫Sagen wir Top-5-Billig.
‫Also ein ganz einfacher Name, aber er wird funktionieren.
‫Und dann wollen wir
‫eigentlich nur Anfragen zu dieser Strecke bekommen.
‫Und so ist es jetzt an der Zeit, nachzudenken.
‫Wie werden wir diese Funktionalität implementieren?
‫Nun, im Grunde wollen
‫wir eigentlich immer noch alle Touren wie hier bekommen.
‫Lassen Sie mich also fortfahren und damit beginnen, das
‫hier zu kopieren und einzufügen.
‫Wir möchten diese Funktion hier also wirklich immer noch verwenden, da es
‫nicht wirklich sinnvoll ist,
‫die gesamte Logik, die darin enthalten ist, neu zu schreiben.
‫Aber bevor wir diesen Routen-Ender aufrufen können, möchten wir
‫im Grunde einige der Felder in der Abfragezeichenfolge
‫vorab ausfüllen.
‫Wir wissen
‫also bereits, dass unsere Abfragezeichenfolge so aussehen sollte.
‫Und tatsächlich können wir hier noch einiges hinzufügen.
‫Aber im Wesentlichen muss
‫unsere Abfragezeichenfolge ungefähr so aussehen.
‫Die Lösung besteht also darin, eine Middleware auszuführen,
‫bevor wir diesen getAllTours-Handler tatsächlich ausführen.
‫Diese Middleware-Funktion
‫manipuliert dann das eingehende Abfrageobjekt.
‫Dies ist also ein weiteres
‫wirklich schönes Beispiel für die Verwendung von Middleware,
‫da Sie sich wirklich mit diesem Konzept des
‫strategischen Einsatzes von Middleware vertraut machen und sich daran
‫gewöhnen müssen, um das Anforderungsobjekt nach Bedarf zu ändern.
‫Also fügen wir es hier hinzu.
‫Also tourController.
‫Und dann
‫die Middleware-Funktion, die wir gleich erstellen
‫werden, die aliasTopTours heißt.
‫Also, lass uns diesen Namen kopieren, zum tourController wechseln und
‫ich werde ihn hier ganz oben platzieren.
‫Also Exporte. dann Anfrage, Antwort
‫und was ist das dritte Argument, das wir
‫in der
‫Middleware brauchen, erinnern Sie sich?
‫Und ich weiß, dass der Express-Abschnitt zu diesem Zeitpunkt schon
‫ziemlich weit weg ist, aber ich hoffe, Sie erinnern sich daran, dass
‫das dritte Argument hier als nächstes kommen muss.
‫Also, um die nächste Middleware aufzurufen,
‫die sich im Middleware-Stack befindet.
‫Sparen Sie.
‫Und so sollte dieser Fehler dort verschwinden.
‫Also, lasst uns tun, was wir gesagt haben.
‫Im Grunde also, um
‫das Abfrageobjekt so zu manipulieren, dass es
‫beim Erreichen des getAllTours-Handlers bereits anders ist.
‫Also, lass uns das zuerst
‫tun und dann wirklich einen Blick darauf werfen, was passiert.
‫Denken Sie daran, das Limit wird auf fünf festgelegt.
‫Und denken Sie daran, dass hier alles Strings sind und ich
‫dies auch auf einen String setze.
‫Was hatten wir jetzt noch?
‫Also, wir haben
‫diese Art, also kopieren wir das hier einfach und sagen req. Anfrage. Sortieren.
‫Das sollte es sein.
‫Und dann können wir tatsächlich
‫auch einige Felder angeben, damit der Benutzer nicht alle
‫Felder bekommt, die wir dort haben.
‫Nehmen wir
‫also an, wir wollen nur den Namen, den
‫Preis, den Bewertungsdurchschnitt, die Zusammenfassung und den Schwierigkeitsgrad.
‫Speichern Sie es
‫und jetzt brauchen wir nur noch das nächste Mal, sonst bleibt diese
‫Middleware für immer hier hängen und kann nicht weitermachen.
‫Also, lassen Sie uns jetzt
‫etwas besser herausfinden, was hier tatsächlich passieren wird.
‫Sobald also jemand
‫die Top-5-Billig-Route trifft, legen wir los.
‫Die erste Middleware, die ausgeführt wird, ist aliasTopTours.
‫Also die Funktion, die wir gerade erstellt haben.
‫Was dies tun wird, ist, dass
‫diese Eigenschaften des Abfrageobjekts
‫auf diese Werte gesetzt werden, die wir hier angegeben haben.
‫Grundsätzlich Teile des Abfrageobjekts
‫vorausfüllen, bevor wir dann den getAllTours-Handler erreichen.
‫Sobald wir also zu dieser Funktion gelangen, ist das
‫Abfrageobjekt bereits vorausgefüllt, auch wenn der Benutzer
‫keinen dieser Parameter in den
‫Abfragestring eingegeben hat.
‫Im Wesentlichen füllen wir hier
‫die
‫Abfragezeichenfolge für den Benutzer aus, damit der
‫Benutzer dies nicht selbst tun muss.
‫Also, lassen Sie uns jetzt wirklich weitermachen und dies versuchen.
‫Also kopiere ich das.
‫Und hier sind es keine Touren.
‫Es ist Top-5-Touren.
‫Whoa, was ist hier los?
‫Aus irgendeinem Grund wird
‫diese Route nicht gefunden, also gehen wir zurück.
‫Also Top-5-Touren.
‫Und so, hier in der Route, ah, okay.
‫Es heißt top-5-billig, also
‫mein Fehler hier.
‫Also, billig, schick es
‫jetzt, und das ist immer noch nicht richtig.
‫Oh ja.
‫Die Touren muss ich natürlich noch hier einstellen.
‫Wir befinden uns also in der Tourressource und der gesamte Router
‫ist auf dieser Tourroute montiert.
‫Denken Sie daran.
‫Und so ist es in diesen Touren, dieser Art von
‫Minianwendung, erinnern Sie sich
‫daran, wo ich diese Top-5-günstige Route erstellt habe.
‫Hoffen wir also, dass es jetzt funktioniert.
‫Und das tut es tatsächlich.
‫Also, das hat funktioniert, das ist fantastisch.
‫Jetzt könnten wir hier natürlich noch viel
‫mehr Alias-Routen machen, aber das ist nicht wirklich notwendig.
‫Ich wollte Ihnen wirklich nur
‫das Konzept zeigen, Ihnen zeigen, dass es ein nettes
‫Feature sein kann, das zu jeder API hinzugefügt
‫werden kann, und ich wollte Ihnen auch noch einmal die Leistungsfähigkeit von Middleware zeigen.
‫Wir sprechen hier also von Mungo, aber dennoch ist
‫es sehr wichtig, sich mit
‫den Express-Konzepten vertraut zu machen, über die wir zuvor gesprochen haben.
‫Wie auch immer, wir sind jetzt mit unseren API-Funktionen fertig.
‫Im nächsten Video werden wir das alles
‫schnell umgestalten, um den gesamten
‫Code etwas modularer und natürlich besser zu machen.