‫Tutor: In questa lezione, le cose
‫inizieranno a diventare un po' più avanzate.
‫E questo perché ora creeremo più router e
‫utilizzeremo un processo chiamato montaggio.
‫Quindi vediamo come funziona.
‫Ora, prima di fare qualsiasi cosa, teniamo
‫presente che l'obiettivo finale sarà quello di separare tutto il
‫codice che abbiamo in questo file in più file.
‫Quindi quello che voglio è avere un
‫file che contenga solo tutti questi percorsi, quindi voglio
‫avere un altro file,
‫che abbia i percorsi per gli utenti.
‫Vorrei anche avere un file che contenga i gestori solo
‫per gli utenti e poi anche un
‫file che conterrà tutti i gestori per i tour, ok?
‫Ed è proprio quello che
‫faremo nella prossima lezione.
‫Ma per poterlo fare, ora
‫dobbiamo creare un router separato per
‫ciascuna delle nostre risorse.
‫Quindi, torniamo alle nostre rotte qui e quindi in questo momento,
‫possiamo dire che tutte le nostre rotte, quindi queste quattro rotte qui,
‫possiamo dire che sono
‫tutte sullo stesso router, ok?
‫E il router, è questo oggetto app.
‫Ma se vogliamo separare queste rotte
‫in file diversi, quindi di nuovo, un
‫file per queste due
‫rotte e un file per queste due
‫rotte, allora la cosa migliore da fare è creare
‫un router per ciascuna delle risorse, ok?
‫E così, ecco come faremo.
‫In realtà non è così complicato, ma
‫dovrai concentrarti su
‫un paio di concetti, ok?
‫Quindi, iniziamo dicendo
‫che const tourRouter è uguale a express. router.
‫Ok, proprio così,
‫creiamo un nuovo router e lo salviamo in questa variabile.
‫Bene, quindi ora usiamo quel router
‫per questi due percorsi.
‫Quindi qui lo usiamo al posto di app.
‫Bene, ora abbiamo due router e poi route
‫e poi, ovviamente, get e post
‫route su quel router.
‫Ora, come colleghiamo effettivamente questo nuovo router
‫alla nostra applicazione?
‫Bene, lo useremo come middleware, va bene?
‫E questo è perché, questo nuovo tool router modulare qui, è in
‫realtà un vero middleware, va bene?
‫E quindi possiamo
‫dire, (digitazione da tastiera), app. use, e poi il percorso, ma conserviamolo per dopo.
‫Quindi possiamo usare il tourRouter sulla nostra applicazione e dove
‫vogliamo usare il tourRouter?
‫Bene, vogliamo
‫usarlo su /api/versione uno/tours, ok?
‫Quindi, di nuovo, questo tourRouter qui è un vero middleware.
‫E vogliamo usare quel middleware per questo percorso specifico.
‫Ok, quindi usiamo app. usa e
‫specifica la funzione middleware, che è questo
‫router, quindi specifichiamo il percorso quindi l'URL, per
‫il quale vogliamo effettivamente usare quel middleware, ok?
‫E così,
‫proprio così, abbiamo creato fondamentalmente un'applicazione secondaria, ok?
‫Ora, c'è solo
‫una cosa che dobbiamo davvero
‫cambiare qui, che sono questi percorsi qui, ok?
‫Quindi fammi cambiare questo qui, e poi
‫spieghi perché deve essere così.
‫Quindi qui vogliamo solo il
‫percorso e qui dentro vogliamo solo l'ID, ok?
‫Ora, perché è così?
‫Bene, è perché questo middleware tourRouter,
‫comunque, funziona solo su questo percorso qui, ok?
‫Quindi, una volta che siamo
‫nel router, siamo già su questa rotta.
‫Quindi nel nostro tourRoute, e quindi questo primo percorso
‫che dovevamo fare prima, vogliamo eseguirlo solo come
‫api/versione uno/tours e quindi questo
‫è ciò che significa questo percorso qui ora, ok?
‫Quindi è fondamentalmente il percorso di questo URL, ok?
‫Quindi questa piccola mini applicazione va bene?
‫Quindi, in realtà, quando creiamo un sistema di
‫router come questo, diciamo che creiamo una piccola app secondaria
‫per ciascuna di queste risorse, ok?
‫Quindi questo è il percorso o la
‫mini applicazione, che è di nuovo in /tours, ok?
‫E poi il secondo percorso, è in /id, giusto?
‫E questo perché,
‫prima, era al tour /id, quindi era tutto questo.
‫Quindi così, ma ora, questo URL qui
‫è già nel nostro tipo di percorso genitore quassù, giusto?
‫Quindi diciamo che abbiamo
‫una richiesta in arrivo ora per /api/version one /tours/version id.
‫Quindi la richiesta va nello stack del middleware
‫e quando raggiunge questa riga di
‫codice qui, corrisponderà a questo URL qui, giusto?
‫Quindi corrisponderà a questo percorso e
‫quindi verranno eseguite due funzioni middleware del router.
‫Quindi o due router sono questa sottoapplicazione che abbiamo creato, che
‫a sua volta ha i suoi percorsi, ok?
‫E se la richiesta era per /id, beh,
‫allora sarà all'interno della
‫nostra mini app, seguirà questo percorso qui, giusto?
‫E infine,
‫ovviamente, eseguirà uno di questi handle qui,
‫a seconda del metodo utilizzato.
‫Quindi spero che abbia avuto senso.
‫E quindi ora andiamo avanti e facciamo
‫lo stesso per tutti gli utenti, va bene?
‫Quindi, andrò avanti e creerò un altro router qui, (digitando
‫da tastiera) chiamato userRouter, e poi, proprio come
‫prima, è espresso. Il
‫router non è così, sì.
‫Ok, quindi usa un router
‫e poi dobbiamo fare lo stesso processo di qui.
‫E a proposito, questo si chiama montaggio del router, ok?
‫Quindi montare un nuovo router su un percorso, in pratica, ok?
‫Quindi ora abbiamo utenti e qui utente.
‫E in effetti, montare
‫i router, deve venire dopo tutte queste
‫definizioni o almeno dopo che abbiamo dichiarato una variabile, giusto?
‫Quindi non possiamo usare
‫i router prima di averli effettivamente dichiarati.
‫Ok, ora tutto ciò che dobbiamo fare
‫è andare avanti e cambiare anche le rotte qui.
‫E quindi, proprio come prima, se ora
‫c'è una richiesta per /api/version one/users/id, la richiesta entrerà nello
‫stack del middleware e quando
‫raggiungerà questo middleware qui,
‫eseguirà il router
‫dell'utente, perché questo percorso qui è abbinato, ok?
‫E quindi entra nel
‫router dell'utente e
‫di nuovo, proprio come prima, questo errore è fondamentalmente il
‫percorso nella nostra sottoapplicazione, e questo qui è l'intero URL/id, ok?
‫Ha senso?
‫Quindi, prima
‫di andare avanti, proviamo effettivamente se funziona ancora.
‫Quindi, prendiamo tutti i tour qui e infatti, lo fa.
‫Quindi tutto funziona ancora allo stesso modo con gli utenti e
‫anche questo funziona ancora.
‫Quindi abbiamo fatto tutte queste modifiche e decodificato le
‫opere, il che significa che i nostri due nuovi router sono montati correttamente.
‫Bene, e con ciò, siamo pronti per separare o
‫diversi router ora in file diversi.
‫E questo lo faremo bene nella prossima lezione.