‫Jonas: Bentornato, quindi ora è giunto il
‫momento di iniziare finalmente a costruire la nostra API.
‫Quindi questa lezione sarà davvero il primo passo
‫di un lungo viaggio verso la costruzione di questo progetto del corso principale.
‫E vorrei iniziare mostrandovi di nuovo il
‫progetto di cui stiamo parlando.
‫Quindi questo è il progetto Natours.
‫È fondamentalmente un'applicazione
‫dove possiamo vedere i tour e anche prenotarli.
‫Possiamo creare account utente, possiamo accedere e fare davvero
‫tutti i tipi di cose diverse.
‫Quindi, per esempio, possiamo dare un'occhiata al tour qui.
‫Ha tutti questi dettagli, questa mappa,
‫ha recensioni di altri utenti che utilizzano la piattaforma e possiamo
‫persino prenotare il tour.
‫Dovremmo accedere prima di poter prenotare e non
‫lo farò ora
‫perché è solo una demo molto semplice
‫qui, quindi volevo solo mostrarti questa interfaccia grafica,
‫in pratica, del progetto che stiamo costruendo .
‫Ora questa parte che stai vedendo
‫qui è in realtà la parte che
‫costruiremo entro la
‫fine del corso, perché questa prima
‫parte del corso è costruire un'API usando esattamente gli stessi
‫dati che vedi qui su questa dinamica sito web.
‫Quindi, di nuovo, iniziamo
‫costruendo l'API e poi il sito Web renderizzato dinamicamente, e scelgo
‫di farlo in questo
‫modo perché in questo modo
‫non dobbiamo mescolare tutti questi diversi contenuti tutti
‫insieme, quindi per imparare Express e Mongodb e Mongoose, trovo molto
‫più semplice lavorare solo con i dati e
‫non preoccuparmi della parte grafica, anche se
‫forse è un po' più eccitante perché
‫puoi vedere i risultati reali in questa
‫bellissima interfaccia.
‫Ma per imparare, è meglio di nuovo, semplicemente
‫occuparsi dei dati stessi e
‫preoccuparsi di renderli belli in seguito.
‫Ok, quindi lascia che ti mostri anche l'API.
‫E per questo, ovviamente, uso Postman.
‫Crea una nuova scheda qui.
‫E così l'API finale a cui abbiamo avuto
‫accesso all'API slash, slash versione uno, e quindi, ad
‫esempio, possiamo dare un'occhiata ai tour.
‫Quindi usiamo la
‫richiesta get e poi otteniamo tutti questi diversi tour.
‫Bene, di nuovo, esattamente gli stessi
‫tour che hai visto
‫sull'interfaccia grafica, quindi sul sito Web renderizzato prima.
‫Ok, possiamo anche andare avanti, prendere l'ID e richiedere solo
‫quell'ID, quindi in quel tour per quell'ID, e quindi vedi che ora abbiamo
‫solo questo qui con ancora più dati di
‫quelli che avevamo prima.
‫Quindi abbiamo le località
‫di partenza qui, abbiamo guide turistiche che a loro volta
‫hanno altri ID, abbiamo località, abbiamo recensioni, quindi tutto
‫ciò che abbiamo in un tour.
‫Quindi vedete, è roba davvero avanzata
‫e quindi in realtà abbiamo più di semplici tour.
‫Abbiamo utenti ma non saremo in grado di
‫accedervi perché dobbiamo essere autenticati.
‫Quindi non hai effettuato l'accesso e quindi in questo
‫momento dovremmo accedere alla nostra app.
‫Ora, a questo punto, smetterò di
‫mostrarti tutte le funzionalità perché lo costruiremo
‫durante il corso,
‫solo per mostrarti che c'è davvero molto da fare qui e
‫quindi c'è molto materiale e cose da imparare davanti a
‫te, quindi spero che tu sia eccitato
‫per questo e che tu
‫voglia fare il primo passo con me in questo momento.
‫Quindi torniamo indietro e implementiamo il percorso dei tour
‫o almeno iniziamo a implementarlo.
‫Ok, quindi questo pezzo di codice qui, non ci serve
‫più e non lo elimino, lo commento solo.
‫Quindi, di nuovo, usiamo app. get
‫perché in questa
‫lezione inizieremo semplicemente gestendo
‫le richieste get e l'URL sarà slash API e tour.
‫Quindi non sto
‫usando v1, beh, potrei usare subito v1,
‫quindi è una buona pratica specificare la versione dell'API.
‫Ok, quindi nel caso in cui
‫desideri apportare alcune modifiche
‫alla tua API, puoi farlo ma semplicemente su v2
‫senza interrompere tutti coloro che stanno ancora utilizzando v1.
‫Ok, quindi in pratica puoi diramarti, creare
‫una nuova versione della tua
‫API, ma tutti gli utenti possono ancora utilizzarla.
‫Se lo facessimo
‫in questo modo e tu apportassi modifiche ai tour slash
‫dell'API, gli utenti che hanno
‫iniziato a utilizzarlo prima che tu apportassi la modifica incorrerebbero in qualche problema.
‫Ok, quindi dovremmo sempre specificare la versione dell'API.
‫Potremmo anche farlo
‫nel sottodominio, ma è più semplice includerlo semplicemente nell'URL.
‫Ok, e poi, naturalmente, il nostro gestore di rotta.
‫Quindi è così che di solito chiamiamo questa funzione.
‫Lo chiamiamo gestore di rotta.
‫Ok, solo per familiarizzare con questi termini Express.
‫Ora cosa vogliamo fare quando qualcuno percorre questa strada?
‫Bene, vogliamo semplicemente rispedire indietro tutti i tour.
‫Quindi è simile a quello che abbiamo
‫appena imparato nell'ultima lezione, giusto.
‫Abbiamo questo URL o questo endpoint, slash tour e
‫questo di solito restituirà tutti i dati
‫per quella risorsa, giusto.
‫Quindi, anche i tour sono la risorsa ora, e sto
‫iniziando con i
‫tour qui perché è, direi, il più ovvio
‫dal momento che stiamo costruendo un sito Web o un'applicazione
‫Web per la vendita di tour, giusto.
‫Ora, dove prendiamo effettivamente
‫questi tour che vogliamo rispedire al cliente?
‫Bene, è qui nella cartella
‫dev-data, poi data e poi tours-semplice.
‫Quindi è questo file JSON, ed è molto
‫simile a quello che avevamo per
‫la nota farm, quindi di nuovo, è un array di oggetti JSON
‫che ha poi un mucchio di dati su ciascuno dei tour.
‫E quindi
‫sì, questi sono i dati che invieremo al cliente.
‫Ora, prima di
‫poter inviare i dati, dobbiamo prima leggerli
‫e quindi, di nuovo, non lo facciamo all'interno del gestore
‫di rotte, ma lo facciamo prima.
‫Ok, e proprio come ho spiegato nel progetto
‫precedente, possiamo farlo perché
‫il codice di primo livello viene eseguito solo
‫una volta, subito dopo l'avvio dell'applicazione, giusto.
‫E ora che sai tutto sul ciclo
‫degli eventi, ha ancora più senso per te a questo punto, giusto.
‫Quindi solo questa funzione di callback, ad esempio qui,
‫verrà eseguita all'interno del ciclo degli
‫eventi e quindi qui non possiamo avere alcun blocco e codice.
‫Ma fuori, non è affatto un problema.
‫Quindi questo legge semplicemente i tour in una variabile al
‫di fuori di tutto questo in modo sincrono.
‫Quindi fs, e per questo,
‫ovviamente, abbiamo bisogno del modulo in realtà, e
‫quindi lo facciamo qui in alto.
‫E mi piace iniziare sempre con i moduli principali
‫e quindi lo faccio al primo.
‫Quindi richiedi, fs, quindi
‫fs. readFileSync, è già qui.
‫E ora, usiamo il dirname.
‫E così di
‫nuovo, a questo punto, sai già
‫perché abbiamo effettivamente accesso a questa variabile qui, quindi dirname è la cartella in
‫cui si trova lo script corrente,
‫e questa è la cartella principale.
‫Quindi da qui, dobbiamo passare ai dati di
‫sviluppo, quindi ai dati e poi lì
‫dentro, abbiamo tour semplici. json.
‫Ok, e ora analizziamo anche il risultato di questo passaggio
‫proprio in questo passaggio.
‫Quindi JSON, in realtà quello maiuscolo,
‫quindi JSON. parse, in modo che il JSON
‫che abbiamo qui venga automaticamente convertito in un oggetto Javascript
‫o in una matrice di oggetti Javascript, in realtà.
‫Quindi salvandolo e così questo lo riformatterà e quindi ora tutto
‫ciò che dobbiamo
‫fare è inviarlo davvero al client, quindi
‫res. json,
‫e fammi effettivamente specificare il codice di
‫stato qui, anche se 200
‫è lo standard, mi piace farlo in ogni singola risposta.
‫Va bene, quindi JSON, e cosa vogliamo restituire ora?
‫Non messaggio, questo è sicuro.
‫Quindi cosa vogliamo restituire?
‫Bene, ricorda che
‫avremmo usato lo standard di formattazione Jsend JSON.
‫Ok, e quindi lì, specifichiamo uno stato, e
‫quindi lo stato, e questo
‫può essere successo, fallimento o errore, ok.
‫Quindi il successo è ovvio.
‫È quando abbiamo un codice 200 o un 201
‫o in realtà solo un codice che inizia con 200.
‫Quindi abbiamo il fail, che è un errore sul client, e
‫poi abbiamo anche un errore,
‫quando si è verificato un errore sul server.
‫Va bene, ma li useremo un po' più tardi.
‫Ad ogni modo, abbiamo anche la proprietà dei dati che
‫è, come ho
‫detto, la cosiddetta busta per i nostri dati.
‫Quindi specifichiamo la proprietà dei
‫dati e quei dati a loro volta avranno un oggetto che
‫quindi contiene i dati, quindi il
‫passaggio di risposta che vogliamo effettivamente inviare.
‫E in questo caso si tratta di tour.
‫Quindi tour e poi tour, che in questo
‫caso è lo stesso nome.
‫Quindi con ES6, in realtà non abbiamo bisogno di
‫specificare la chiave e il valore se hanno
‫lo stesso nome, quindi potremmo
‫semplicemente scrivere tour, ma volevo solo
‫specificare qui che ho scritto tour qui
‫perché, beh, questo è il nome della risorsa e dell'endpoint,
‫ed è per questo
‫che, all'interno dei dati, rimando un oggetto che ha la proprietà tour.
‫Ok, quindi se questo si chiamasse x,
‫per esempio, allora lo
‫chiamerei qui x, ma qui dovrei ancora dire tour, ok.
‫Lo sto rimettendo ai tour perché ha più senso
‫e ora posso cancellarlo qui e lasciarlo così.
‫E questo è tutto ciò che dobbiamo fare.
‫Quindi abbiamo letto i nostri dati e quindi abbiamo formattato la
‫nostra risposta in questo modo qui, utilizzando la specifica dei dati JSend.
‫Ok, quindi cose molto semplici.
‫Ora proviamolo e
‫ora dobbiamo cambiare, ovviamente, l'URL, quindi
‫abbiamo slash API, slash versione uno e tour.
‫Quindi questo è il nostro URL.
‫Facciamo ancora una richiesta
‫get, e quindi è quella a cui stiamo
‫rispondendo nel codice, quindi ricorda, usando questo
‫metodo get, quindi premi Send, e infatti, eccoci qui.
‫Quindi qui abbiamo tutti i nostri tour.
‫Quindi, fantastico, è davvero fantastico.
‫Davvero, davvero un bel lavoro.
‫Ora, per finire, un'altra cosa che mi
‫piace fare di solito quando inviamo più risposte è
‫includere un campo chiamato risultati
‫con il numero di risultati che stiamo inviando.
‫Ok, e questo non fa
‫parte delle specifiche
‫JSend, ma mi piace comunque
‫farlo perché rende molto facile
‫per il cliente ottenere informazioni molto
‫rapide sui dati che sta ricevendo.
‫Quindi sappiamo che i tour sono una matrice e quindi
‫tutto ciò che dobbiamo fare è dire tour. lunghezza.
‫Ok, e questo in realtà ha
‫senso solo ogni volta che inviamo un array, quindi più oggetti.
‫Se inviassimo solo un tour, non avrebbe senso
‫avere risultati come uno, giusto, e quindi
‫lo faccio solo
‫ogni volta che inviamo un array con
‫più oggetti al suo interno.
‫Quindi facciamolo di nuovo.
‫E infatti, abbiamo nove risultati, quindi abbiamo la
‫proprietà dei dati, quindi lì dentro, tour, per specificare che
‫stiamo inviando tour, e poi
‫un array con tutti e nove i tour lì dentro.
‫Quindi puoi vedere un altro oggetto e
‫un altro e un altro
‫ancora, e fino alla
‫fine, quindi questo è il primissimo passo verso la nostra API.
‫Ovviamente, a questo punto, è come un'API basata su file, quindi leggiamo questi
‫dati da un'API, ma in seguito,
‫ovviamente, memorizzeremo questi dati in
‫un database e poi li leggeremo da lì.
‫Ma comunque, questo sembra già vero e questo
‫di sicuro mi fa sentire davvero bene,
‫e spero che faccia stare bene anche te.
‫Quindi questo è tutto per la richiesta get.
‫Successivamente, ci occuperemo della richiesta di post in modo
‫da poter effettivamente aggiungere un nuovo tour ai nostri dati.