‫Tutor: In dieser
‫Vorlesung wird es etwas fortgeschrittener.
‫Und das liegt daran, dass wir jetzt mehrere Router
‫erstellen und einen Prozess namens Mounten verwenden.
‫Sehen wir uns also an, wie das alles funktioniert.
‫Bevor wir all dies tun, sollten wir uns
‫daran erinnern, dass das ultimative Ziel darin besteht, den gesamten Code,
‫den wir in dieser Datei haben, in mehrere Dateien aufzuteilen.
‫Was ich also möchte, ist eine Datei zu
‫haben, die nur alle diese Routen enthält, dann möchte
‫ich eine andere Datei haben,
‫die die Routen für die Benutzer enthält.
‫Ich möchte auch eine Datei haben, die nur die Handler
‫für die Benutzer enthält und dann auch
‫eine Datei, die alle Handler für die Touren enthält, okay?
‫Und genau das werden wir in
‫der nächsten Vorlesung tun.
‫Aber dafür müssen wir jetzt
‫eigentlich für jede unserer Ressourcen einen
‫eigenen Router erstellen.
‫Gehen wir also zurück zu unseren Routen hier und jetzt können wir
‫sagen, dass alle unsere Routen, also diese vier Routen hier, wir sagen
‫können, dass sie alle
‫auf demselben Router liegen, okay?
‫Und der Router ist dieses App-Objekt.
‫Aber wenn wir diese Routen
‫in verschiedene Dateien aufteilen möchten, also wieder
‫eine Datei für diese
‫beiden Routen und eine Datei für diese
‫beiden Routen, dann erstellen Sie am besten einen
‫Router für jede der Ressourcen, okay?
‫Und so werden wir es machen.
‫Es ist eigentlich nicht so kompliziert, aber
‫Sie müssen sich
‫mit ein paar Konzepten auseinandersetzen, okay?
‫Lassen Sie uns also
‫zunächst sagen, const tourRouter ist gleichbedeutend mit Express. Router.
‫Okay, also erstellen
‫wir einfach so einen neuen Router und speichern ihn in dieser Variable.
‫In Ordnung, und jetzt verwenden wir diesen
‫Router für diese beiden Routen.
‫Also hier verwenden wir es anstelle von App.
‫Okay, jetzt haben wir also zwei Router und dann
‫Route und dann natürlich die Get- und
‫Post-Routen auf diesem Router.
‫Wie verbinden wir nun diesen neuen Router
‫eigentlich mit unserer Anwendung?
‫Nun, wir werden es als Middleware verwenden, in Ordnung?
‫Und das liegt daran, dass dieser neue modulare Werkzeugrouter hier eigentlich
‫eine echte Middleware ist, in Ordnung?
‫Und so
‫können wir sagen (Tastatureingabe), App. verwenden, und dann die Route, aber das behalten wir für später.
‫Damit wir den tourRouter in unserer Anwendung nutzen können und wo
‫wollen wir den tourRouter einsetzen?
‫Nun, wir
‫wollen es auf /api/version one/tours verwenden, okay?
‫Auch hier ist dieser tourRouter eine echte Middleware.
‫Und wir möchten diese Middleware für diese spezielle Route verwenden.
‫Okay, und so verwenden wir App. verwenden und
‫die Middleware-Funktion angeben, das ist dieser Router, dann
‫geben wir die Route an, also die URL,
‫für die wir diese Middleware eigentlich verwenden möchten, okay?
‫Und so
‫haben wir im Grunde eine Unteranwendung erstellt, okay?
‫Nun, es gibt nur
‫eine Sache, die wir hier
‫wirklich ändern müssen, und zwar diese Routen hier drin, okay?
‫Lassen Sie mich das hier ändern und dann erklären,
‫warum es so sein muss.
‫Hier wollen wir also nur
‫die Route und hier drinnen nur die ID, okay?
‫Nun, warum ist das so?
‫Nun, es liegt daran, dass diese
‫TourRouter-Middleware sowieso nur auf dieser Route hier läuft, okay?
‫Und wenn wir also erst einmal im Router
‫sind, dann sind wir auch schon auf dieser Route.
‫Also bei unserer tourRoute, und also dieser ersten
‫Route, die wir vorher machen mussten, wollen wir
‫sie nur als api/version one/tours
‫ausführen und das bedeutet diese Route hier jetzt, okay?
‫Es ist also im Grunde die Route dieser URL, okay?
‫Ist diese kleine Minianwendung also in Ordnung?
‫Wenn wir also ein Router-System wie dieses
‫erstellen, sagen wir eigentlich, dass wir für jede dieser
‫Ressourcen eine kleine Unter-App erstellen, okay?
‫Dies ist also die Route oder
‫Minianwendung, die wiederum bei /tours ist, Okay?
‫Und dann ist die zweite Route bei /id, richtig?
‫Und das liegt daran,
‫dass es vorher bei Tours /id war, also war das alles.
‫Also so, aber jetzt ist diese URL hier
‫bereits in unserer Art der übergeordneten Route hier oben, oder?
‫Nehmen wir an, wir
‫haben jetzt eine eingehende Anfrage für /api/version one /tours/version id.
‫Die Anfrage geht also in den Middleware-Stack
‫und wenn sie diese Codezeile hier
‫trifft, wird sie dieser URL hier entsprechen, richtig?
‫Es wird also mit dieser Route
‫übereinstimmen und daher werden ein oder zwei Router-Middleware-Funktionen ausgeführt.
‫Also oder zwei Router ist diese Unteranwendung, die wir erstellt
‫haben, die wiederum ihre eigenen Routen hat, okay?
‫Und wenn die Anfrage nach /id war, nun,
‫dann wird sie in
‫unserer Mini-App diese Route hier finden, oder?
‫Und schließlich
‫wird es hier natürlich einen dieser Handles ausführen,
‫je nachdem, welche Methode verwendet wurde.
‫Also ich hoffe, das war sinnvoll.
‫Also lasst uns jetzt wirklich weitermachen
‫und dasselbe für alle Benutzer tun, in Ordnung?
‫Also werde ich hier einen anderen Router erstellen
‫(Tastatureingabe), den userRouter, und dann, wie
‫zuvor, Express. Router
‫nicht so, ja.
‫Okay, verwenden Sie also einen Router,
‫und dann müssen wir den gleichen Vorgang wie hier durchführen.
‫Und das nennt man übrigens Router montieren, okay?
‫Also einen neuen Router auf einer Route montieren, im Grunde, okay?
‫Wir haben also jetzt Benutzer und hier Benutzer.
‫Und eigentlich muss die
‫Montage der Router nach all diesen Definitionen
‫erfolgen oder zumindest nachdem wir eine Variable deklariert haben, oder?
‫Wir können die Router also
‫nicht verwenden, bevor wir sie tatsächlich deklariert haben.
‫Okay, jetzt müssen wir nur
‫noch weitermachen und auch die Routen hier ändern.
‫Und so wie zuvor, wenn jetzt eine
‫Anforderung für /api/version one/users/id vorliegt, wird die Anforderung in den
‫Middleware-Stack eingetragen und wenn sie
‫hier auf diese Middleware trifft,
‫wird der Benutzerrouter
‫ausgeführt, da diese Route hier ist abgestimmt, ok?
‫Und dann gibt es den
‫Benutzerrouter ein und
‫wieder, genau wie zuvor, ist dieser Fehler die Route im Grunde
‫in unserer Unteranwendung, und dies hier ist die gesamte URL/ID, okay?
‫Ist das sinnvoll?
‫Bevor wir fortfahren,
‫sollten wir also testen, ob dies noch funktioniert.
‫Also, lassen Sie uns alle Touren hier bekommen und tatsächlich tut es das.
‫Bei den Benutzern funktioniert also immer noch alles gleich und
‫auch das funktioniert noch.
‫Also haben wir all diese Änderungen vorgenommen und die
‫Arbeiten dekodiert, was bedeutet, dass unsere beiden neuen Router korrekt montiert sind.
‫In Ordnung, und damit sind wir bereit, Router jetzt
‫tatsächlich in verschiedene Dateien zu trennen.
‫Und das werden wir in der nächsten Vorlesung richtig machen.