[Powered by Google Translate] [Seminario] [Introduzione il programmatore ad una API] [Billy Janitsch] [Harvard University] [Tommy MacWilliam] [Questo è CS50.] [CS50.TV] Ciao a tutti, io sono Billy, e oggi ho intenzione di parlare di API, o interfacce di programmazione delle applicazioni, in particolare nel contesto di CS50 progetti finali e quel genere di cose. In generale, che cosa è un API? In termini molto generali, è una specie di un uomo di mezza che permette di 2 pezzi di software per comunicare con l'altro. Questa è una sorta di definizione molto ampia e non è così rilevante per quello che stiamo guardando. Quello che vuole veramente è una sorta di via di mezzo utile di comunicare con una sorta di banca dati da qualche parte. Ecco una tabella, e in fondo l'idea è che siamo una applicazione, e vogliamo ottenere dati da un database, ma non vogliamo per interrogare il database direttamente. Invece ci vogliono passare attraverso questo tipo di uomo medio, l'API. L'idea alla base è che i numeri 2 e 3 sul grafico sono entrambi sarà molto complicato e disordinato. In altre parole, quando l'API è interrogare il database, è probabilmente intenzione di utilizzare tabelle SQL e tutto quel genere di cose, e abbiamo imparato un po 'su di esso in CS50, ma nel complesso, avete notato che è un po 'di dolore. Diventa molto, molto complicato e disordinato, soprattutto quando si sta facendo query complesse e quel genere di cose. Quello che vuole veramente è una sorta di modo utile e semplice per ottenere tali dati, e questa è l'idea dietro i numeri 1 e 4 del grafico. In altre parole, vogliamo un modo davvero semplice per raccontare l'API per ottenere ciò che per noi e un modo molto semplice per ottenere che i dati indietro. C'è un modo principale che i dati vengono solitamente inviati e ricevuti, che è JSON, o JavaScript Object Notation. Questo può variare un po ', per quanto la modalità di invio della richiesta al API. In altre parole, se si vuole un certo certa quantità di dati, come dire l'API per ottenere che i dati possono variare un po '. Di solito si tratta di fare una sorta di richiesta di rete. In altre parole, l'accesso a un qualche tipo di URL che sta per raccontare la API esattamente quello che vuoi, ma i dati sono quasi sempre rimandato, in altre parole, il numero 4 in JSON. Che cosa è esattamente JSON? Come ho detto, JavaScript Object Notation. E 'fondamentalmente lo standard universale per la trasmissione e la ricezione dei dati. L'idea è che ci sono queste 3 categorie di cose. Hai array, HashMaps, e primitive. Matrici e HashMaps che hai guardato un po 'in CS50, ma hai ottenuto una sorta di un senso molto stretto di quello che sono. In altre parole, con le matrici si sa che stanno tipo legato, in modo da avere un solo tipo di tipo che va in tutto l'intero array. JSON è molto più indulgente con questo genere di cose. In sostanza l'idea è quella di costruire questo oggetto, che può essere composto da qualsiasi di queste 3 cose e può essere composto da più di quelli di loro, e possono essere annidate. Ecco una sorta di esempio di JSON, che queste parentesi graffe qui rappresentare il vostro HashMap, e un HashMap è fondamentalmente una mappatura da una sorta di chiave a una sorta di valore. Vedrete qui che abbiamo la chiave di proprietà, e che è la mappatura su un array, che è tutta questa cosa. Vediamo un altro elemento della hashmap, che è tale isAwesome chiave, che esegue il mapping a un valore di base di vero, in altre parole, un valore booleano. Le primitive possono essere stringhe. Possono essere numeri interi. Essi possono essere Caccio, qualcosa di simile. E vedi il contenuto di questa matrice che punta alla proprietà ha 2 stringhe in esso, auto-similare e meraviglioso. Questi sono 2 immobili di JSON, e vediamo che JSON è impressionante. Per vedere che un po 'più da vicino ho intenzione di costruire un esempio più complesso di JSON qui. Cominciamo con una matrice, per esempio, solo un array vuoto. Ma questo è una sorta di noioso, quindi stiamo andando a riempire un po ', e come ho detto, gli array in JSON sono di tipo associato, in modo da poter avere una stringa qui, che è hi, e questo è un altro elemento di tale matrice. E allo stesso modo, si potrebbe aggiungere un hashmapping qui, che sta per avere un paio di mappature. E 'intenzione di avere una mappatura da nome al Billy stringa. Abbiamo una mappatura da nome a Billy, e abbiamo una mappatura delle colore preferito al blu. Questo è fondamentalmente un buon esempio di JSON. Si ottiene in genere di-whoops, c'è bisogno di una virgola, tutte le diverse parti di essa. Anche in questo caso, non è tipo legato a tutti, in modo da poter avere qualsiasi tipo di tipi di dentro tutto quello che vuoi, e l'idea è che è auto-similare. In altre parole, questo qui è un oggetto JSON, come è tutta questa cosa, come è proprio questo, in modo da avere un primitivo essere un oggetto, un vettore essere un oggetto o una HashMap essere un oggetto. Come è possibile tipo di vedere, JSON è molto, molto utile in quanto è così versatile. Si possono avere tutti i dati possibili che è possibile concepire memorizzati in JSON. Questo lo rende un linguaggio davvero piacevole da usare con le API perché più o meno significa che non importa quali sono i dati che si desidera ci sarà un modo per farlo tornare in JSON. Alcune proprietà che lo rendono particolarmente indicato per JSON questo genere di cose. Come si può vedere, rispetto a un sacco di cose che hai lavorato con in CS50 è relativamente facile da leggere e anche molto facile da scrivere. È possibile rientro se si vuole, come stavo facendo in questo esempio, che ti dà una bella, bella versione che si può vedere molto bene. Ma del resto, è anche facile da leggere e scrivere per un computer. In altre parole, è facile da analizzare e facile da codificare, il che significa che è abbastanza veloce per quanto riguarda la lettura dei dati è interessato, JSON e possono essere generati molto rapidamente. E 'anche molto facile da accedere a parti diverse di JSON e quel genere di cose. Che bello, e inoltre, il fatto che è auto-simile, in altre parole, il fatto che si può avere in JSON JSON in JSON è veramente bello per la memorizzazione dei dati. Un'altra parte che è generalmente molto utile per lavorare con le API è jQuery. Hai imparato un po 'di JavaScript, che è un bel modo per manipolare HTML e CSS all'interno di un sito web. Ma è possibile tipo di essere un dolore al codice JavaScript in modo chiaro, in gran parte perché JavaScript è un linguaggio molto prolisso. Devi imparare un sacco di sintassi, e solo per fare cose molto semplici ci vuole un sacco di codice, in modo da jQuery è una libreria JavaScript per. In altre parole, si tratta di un file JavaScript che è possibile caricare e quindi utilizzare le funzioni di jQuery per fare certe cose. E jQuery rende praticamente la vita molto più semplice. Semplifica ciò che avrebbe avuto centinaia di righe in JavaScript fino a poche righe in jQuery. E 'particolarmente utile se si sta utilizzando le API, perché in genere come si sarà l'accesso API è di fare richieste AJAX, e credo che David ha detto in conferenza che le richieste AJAX sono in genere quando stai facendo una richiesta di rete a una sorta di server e di tornare una sorta di dati e l'aggiornamento di una pagina istantaneamente. Considerando che, in JavaScript chiaro che avrebbe preso i numeri di linee folli per convalidare tutte le intestazioni e di fare tutto questo genere di cose, jQuery ha una funzione molto semplice chiamata AJAX, e tutto quello che dovete fare in AJAX è dare i parametri che si desidera dare l'API, la posizione della API e qualsiasi tipo ulteriore di opzioni che si desidera configurare. E 'molto, molto bello e molto utile per questo genere di cose. Questo è tutto quello che dobbiamo iniziare a ricevere le nostre mani sporche in API. Ho intenzione di far apparire alcuni esempi e di esplorare le loro diverse proprietà e perché sono utili per diversi tipi di cose. La prima cosa che troveremo a mostrarvi è una cosa che sto lavorando al mio laboratorio di ricerca, che è un visualizzatore Ngram, e in fondo l'idea di un visualizzatore Ngram è che si può cercare un qualche tipo di parola o una frase e vedere quante volte è apparso in un certo insieme di testo nel corso del tempo. Questo esempio qui è questo insieme di dati dei neonati che sono nati a New York tra il 1920 e il 2000. Si può cercare, ad esempio, per il nome Jennifer, e vediamo che pre-1960 in realtà non è stato utilizzato più di tanto, e poi come si ottiene in anni più tardi sta diventando sempre più utilizzato. Possiamo anche fare confronti, quindi se confrontiamo Jennifer, ad esempio, Thomas, possiamo vedere Thomas è stato abbastanza diffuso nel corso della storia, mentre Jennifer è un nome più recente. Possiamo fare questo genere di cose. Come funziona l'applicazione? In sostanza, funziona tramite una API. In altre parole, ci sono alcuni parametri. Abbiamo i parametri di quello che sta effettivamente cercando, quali sono questi nomi, e poi abbiamo alcune proprietà di altri, come l'asse Y e l'asse X. Si può vedere che abbiamo diverse possibilità per quanto riguarda la tempo di risoluzione da usare e questo genere di cose. Ci sono queste opzioni, per quanto i dati che vogliamo davvero dal database, e vogliamo ottenere che i dati di nuovo in qualche modo utile. Di solito, se stessimo interrogando direttamente il database sarebbe sorta di essere un dolore per fare presumibilmente perché questi dati su nomi del bambino vive in qualche database da qualche parte, e sarebbe davvero complicato dover interrogare manualmente e decidere esattamente quali dati da restituire. In altre parole, ci interessa solo Jennifer e Thomas, in questo caso, e ci preoccupiamo soltanto su un determinato asse e tutto questo genere di cose. Come si arriva a questo? Per scavare in questa API un po 'di più ti faccio vedere un altro esempio di questa piattaforma che utilizza un insieme di dati leggermente diverso. Questo insieme di dati, invece di essere nomi del bambino, è in realtà solo l'intera stampare database di pubblicazione di Open Library, che è una fonte enorme di testi pubblicati nel corso degli ultimi 100 anni o così. L'idea è che abbiamo questo compositiva di milioni e milioni di testo, che ora possiamo cercare diverse parole e frasi poll Ecco un esempio che varia un po 'diverso dal precedente esempio Ti ho mostrato, che abbiamo questi 3 query di ricerca, la guerra, la guerra, e la parola francese per la guerra, che è guerre. E stiamo cercando nel raggio di 3 diverse sezioni del totale del database. In altre parole, in questa prima query che stiamo cercando solo negli Stati Uniti, nella seconda solo nel Regno Unito, e la terza solo da opere pubblicate in Francia. Vediamo alcuni modelli interessanti emergono. Per esempio, vediamo che proprio da queste parti- oops, ho fatto un casino l'asse un po ', ma si può vedere a destra in questa fascia di qui intorno alla guerra civile c'è un grande picco nella edizione americana ma non un grande picco nelle altre due, e questo è ovviamente perché la guerra civile americana che stava accadendo in quel punto. Possiamo vedere un po 'di cose interessanti lì, ma quello che ci interessa davvero è il modo che abbiamo ottenuto questi dati. Ti porterò dietro le quinte di questa applicazione in un po '. Un buon trucco è se si sta lavorando con il sito e il tipo di esigenza di conoscere cosa sta succedendo dietro le quinte, è possibile aprire gli strumenti di sviluppo. Ho intenzione di utilizzare Chrome strumenti di sviluppo, e per arrivare a quelli si può fare il controllo, cambio, J, e che porta alla console JavaScript. Ci sono un paio di schede qui. Essi possono essere molto utile in diverse circostanze, ma mi interessa la rete scheda in questo momento, e io in realtà essere necessario aggiornare per ottenere quel lavoro. Oh, mi dispiace. Ama per dare un esempio a caso. Ok, useremo questo esempio invece poi. L'idea è che c'è questa API qui, e si può vedere esattamente ciò che l'API sta tornando. Questo è ciò che l'applicazione è tornare dalle API che ha inviato la richiesta. Vorrei ingrandire un po ', e possiamo vedere in fondo è solo una serie di coppie di valori chiave in JSON. In altre parole, abbiamo questa hashmap qui che è la mappatura dei valori. In altre parole, è la mappatura anni per valori. Nel 1765 qualunque parola che inizialmente cercato è usato 90 volte di 1 milione, quindi stiamo tornando questo risultato. Non è esattamente JSON dal momento che abbiamo questa intestazione piccolo risultato qui, ma si noti che questo oggetto tutto qui è solo un grande grande blob JSON. Abbiamo qui una serie che contiene questo elemento intero, e si può vedere che l'elemento intero finisce lì, e poi abbiamo un altro elemento di grande che va tutta la strada fino alla fine, e che finisce qui. Abbiamo una gamma molto grande con 2 oggetti in esso contenuti, e ciascuno di questi oggetti è un HashMap. Si può vedere all'interno di ciascuna di queste HashMaps abbiamo una mappatura di questo valore di indice a 0 e il valore di questo valore a un altro HashMap, che ancora una volta è la mappatura dei valori dell'asse X per i valori dell'asse Y. Potete vedere JSON diventa un po 'complicato, ma nel complesso, in realtà è molto utile, ed è molto facile accesso rispetto al altre forme di notazione. Per quanto riguarda ciò che sta effettivamente l'invio dei dati per l'API per ottenere, Ho intenzione di entrare nel back-end un po 'qui. Questo è il file JavaScript che grande è la gestione di tutte le interazioni del web app, e quindi non si preoccupano più di questo, ma si preoccupano un po '. Per esempio, abbiamo a cuore questa funzione BuildQuery, e l'idea di questa funzione è fondamentalmente che sta cercando all'interno della pagina, capire cosa l'utente vuole interrogare, in altre parole, controllo quelle scatole dove sono inserire i propri termini di ricerca, controllando i diversi valori Y e asse X che hanno scelto e tutto questo genere di cose, e sta andando a sputare il valore della query, che può quindi inviare al API. Questo sembra complicato, ed è piuttosto complicato ma che cosa ho intenzione di fare, anzi, sto già facendo, che è grande- è che io vado a prendere la console per stampare esattamente questo valore della query che è espulsione per l'API. Che in realtà è proprio qui. Ci dispiace, emette un sacco di cose. Ma questo è ciò che ci preoccupa, questo oggetto qui. Questo è l'oggetto query. In altre parole, questo è esattamente ciò che l'applicazione web sta inviando alle API, e quindi cerchiamo di guardare dentro un po ', e vediamo che abbiamo alcuni valori qui. Vediamo abbiamo questo tipo di conteggio, che è eventi per milione di parole, che è esattamente quello che abbiamo scelto l'asse Y qui. Ecco dove che viene. Abbiamo un valore del database, il che significa che c'è qualche determinato database che questi dati siano vivere, e vogliamo accedere ai dati specificamente a differenza dei dati bambino nomi, per esempio. Poi ci sono i gruppi di questo valore, che è tutto dire che vogliamo la ricerca per anno rispetto a qualsiasi altro valore dell'asse X. Poi abbiamo un metodo che alcune API fanno cose diverse. In altre parole, questa API può anche restituire altri tipi di dati, ma in questo caso, vogliamo che la mappatura di valori degli assi X, che i valori dell'asse Y. Questo è ciò che sta dicendo di fare lì, e abbiamo questa matrice di ricerca limiti, che contiene 2 valori. Il primo è quello che vediamo qui, che è tutti i valori contenuti nella casella prima piccola in alto. In altre parole, vogliamo cercare la parola battaglia, e noi vogliamo filtrarla da testi in lingua inglese all'interno della letteratura americana. Abbiamo questo paese, che è Stati Uniti d'America. Abbiamo una lingua, che è inglese, quindi abbiamo tutte queste diverse parti che sono tutti dicendo la API esattamente quello che vogliamo. Non sappiamo quali sono i dati che otteniamo è ancora indietro, ma sappiamo che i dati sta andando a prendere una certa forma. Questo esempio è una sorta di lato complicata, e non si sarebbe necessariamente utilizzare una API questo complesso, ma questo è quello di mostrare la gamma e la potenza di ciò che può fare API. In altre parole, utilizzando un sistema di interrogazione relativamente semplice che, fondamentalmente, sono una casella di input con selettori pochi altri in luoghi diversi. Vorrei Click qui. Abbiamo una casella di input con alcune selezioni di metadati differenti, e abbiamo l'asse Y e asse X selezioni. Noi in realtà non hanno campi che molti, e possiamo vedere molto facilmente siamo in grado di interrogare una sorta di API e ottenere i dati indietro e poi metterlo in questa tabella, che viene poi andare a visualizzare in modo utile. Per vedere un altro esempio che potrebbe essere un po 'più familiare a voi ragazzi stiamo andando a girare su Facebook. API di Facebook si chiama il grafico di Facebook, e in fondo ciò che significa è Facebook si vede come questo enorme database di lotti di pezzi differenti che hanno certe relazioni tra loro. In altre parole, io sono un utente su Facebook, quindi ho un profilo, e ho anche alcuni amici, e ciascuna di esse ha un profilo, e ciascuno dei miei amici ha una parete, che presenta diverse osservazioni su di esso, e ciascuna di queste osservazioni ha simpatie e tutto questo genere di cose. C'è un sacco di parti diverse su Facebook. E 'un API estremamente complessa, e ci sono tonnellate che si possono fare con esso, ma in realtà è piuttosto semplice da usare. Ho intenzione di iniziare andando a graph.facebook.com / billyjanitsch, che è il mio nome account univoco, e il tuo nome account potrà essere una sorta di parola se hai scelto, o potrebbe essere solo una stringa di numeri. Che torniamo sono informazioni piuttosto semplice. Si vede che ho un nome, che è Billy, un cognome, che è Janitsch. C'è un ID univoco Facebook che ho. Si può vedere che io sono maschio e che ho la mia impostazione della lingua di inglese britannico. In altre parole, stiamo assistendo ad informazioni di base qui. Non è troppo, ma ci dà un'idea di quello che c'è. Possiamo fare la stessa cosa per David Malan, per esempio. Credo che il suo nome è dmalan. Vediamo David Malan ha un ID univoco. Ha un nome, cognome, nome, cognome. Vediamo anche che lui è maschio e ha il suo set di lingua inglese. In altre parole, stiamo assistendo ad informazioni piuttosto semplice qui. Ora, cosa succede se cerchiamo di controllare qualcos'altro? Diciamo che sono interessato a ciò che David Malan ha gradito su Facebook. Che posso fare / piace. Ora abbiamo incontrato un problema. Abbiamo una sorta di errore che dice che un token di accesso è tenuto a richiedere questa risorsa. Ma se ci pensate, che rende effettivamente senso perché sarebbe strano se si potesse accedere ad ogni singola parte del database di Facebook solo da una sorta di API semplice, giusto? In altre parole, probabilmente i tuoi dati non sono accessibili da chiunque lo voglia. Questo errore è precisamente ciò che significa. Alcune API richiedono determinate autorizzazioni, al fine di accedere ai propri dati. E API ancora più avanzato, come Facebook uno, richiede determinate autorizzazioni di fare certe cose. Riesco a vedere queste informazioni di base su David Malan. Mi rendo conto che lui è maschio e che vive negli Stati Uniti, ma non riesco a vedere niente passato. Per ovviare a questo, per ora, Facebook ha questo strumento bella che è il grafico API esploratore, e l'idea di che è possibile ordinare di rendere le autorizzazioni per te, sulla base di conto e poi vedere le cose in modo specifico il tuo account possono visualizzare. Per esempio, se faccio graph.facebook.com/billyjanitsch/likes- whoops, credo che devo rinnovare il mio gettone qui. Va bene. Se lo faccio di nuovo, grande, ora vedo che ottengo questo oggetto indietro che dice che mi piace tagliatelle piscina, che sono nella categoria Giochi e passatempi. Mi piace trichechi, che sono nella categoria degli animali. Questi sono i miei gusti reali Facebook. Sono un po 'imbarazzante. Ma possiamo vedere questi dati sono tornati tutti in JSON. E 'abbastanza leggibile. In altre parole, abbiamo questa mappatura dei dati a una sorta di una matrice, e ogni elemento di questo array è una HashMap che mappa il nome di un simile e la categoria di un come. Ogni come ha un ID univoco. Ci sono un sacco di cose diverse di dati che si possono ottenere, e se siete interessati ad utilizzare l'API di Facebook per un progetto definitivo CS50 o per qualcosa di simile in realtà è abbastanza fattibile. In pratica come si ottiene intorno alla cosa di autenticazione è Facebook utilizza un sistema chiamato OAuth, o autenticazione aperta, e io non voglio entrare in ora perché OAuth o il diverso tipo di autenticazione tende a variare molto tra le diverse API, così ho potuto passare molto tempo andando su ognuno, ma sono in realtà piuttosto auto-esplicativo. Se Google API di Facebook è molto leggibile. C'è una specifica intero. Ad esempio, questa è la documentazione per le API di Facebook, e si può vedere sono sulla pagina utente, in modo da poter imparare tutto sui diversi tipi di cose che sono disponibili per ottenere i dati per quanto e anche le autorizzazioni diverse di cui ho bisogno per poter accedervi. Come abbiamo visto, non abbiamo bisogno di autorizzazioni per accedere al nome o il genere, ma oltre a questo abbiamo bisogno di autorizzazioni per la maggior parte delle cose. Questa pagina, o meglio, questo sito vi dirà anche come arrivare un token per essere in grado di autenticarsi. Maggior parte dei sistemi di autenticazione utilizzare una sorta di token dove si ottiene il valore unico, che è una stringa molto lunga e casuale, e in questo modo si può associare la richiesta che si sta facendo con te. In altre parole, sanno che non stai facendo nulla di sospetto con i loro dati. Sanno esattamente quello che stai ricevendo. Sanno anche che si è autorizzati a visualizzare tali informazioni. Se hai fatto una applicazione Facebook e la vostra applicazione ha alcuni utenti, e gli utilizzatori hanno permesso che app per accedere a determinate parti del loro profilo, allora qualunque API chiave o token che tale applicazione utilizza saranno in grado di accedere ai dati per gli utenti. Questo potrebbe sembrare complicato, ma non è troppo male, e se si desidera utilizzare Facebook vi consiglio vivamente di considerare a giocare con le loro API. E 'molto fresco, e si può fare un sacco di cose diverse con esso. Se l'utente si concede queste autorizzazioni si può anche tornare alla API e dire che voglio postare effettivamente al muro di questo utente, o voglio farli pubblicare una foto, ed è per questo sul tuo feed di notizie a volte si ottiene quelle cose fastidiose dicendo il tuo amico ha visto questo video su una sorta di sito strano o qualcosa del genere. Questo perché tale applicazione è stato concesso l'accesso per lasciare sul muro di quella persona. L'idea generale, l'API di Facebook è piuttosto complicato, ma anche molto utile. Sicuramente la pena di verificare se siete ancora alla ricerca di un progetto finale. Un altro insieme di API che ho intenzione di andare oltre è CS50 API. Vorrei ingrandire qui. CS50 ha effettivamente messo insieme tutta una serie di API che è possibile utilizzare per un progetto finale o solo per tutto ciò che stai facendo. E sono per lo più relativi ad Harvard, e variano dal menu HUDS, per esempio, a questa Harvard eventi API, che ti consente di accedere a un elenco di diversi eventi che sono in corso a Harvard e quel genere di cose. E così siamo in grado di fare clic su uno qualsiasi di questi e ottenere una specifica per esso, che sarete in grado di trovare per qualsiasi API, e l'idea è che ti permette di conoscere, A, in particolare quello di chiedere l'API e come richiederlo. In altre parole, se voglio tutti gli eventi che stanno accadendo domani poi ho avuto modo di dare, ovviamente, quella data che voglio in un certo formato, e B, che mi dirà esattamente quello che sta per dare a me. Si dirà che sto per tornare voi questo oggetto JSON, o come si può vedere, ci sono diversi formati. È inoltre possibile restituire i dati come CSV, per esempio. Ma si sa esattamente come i dati che sta andando a guardare quando lo si ottiene indietro così ci si può aspettare di fare certe cose con esso. Siamo in grado di scorrere verso il basso e vedere, per esempio, se si vuole interrogare l'API per ottenere un calendario, allora possiamo utilizzare questo URL particolare e dare alcuni parametri che stanno per essere i dati che vogliamo esattamente. E allo stesso modo, se si desidera che i dati di nuovo in un certo formato, allora possiamo chiedere di trasmettere i dati in un file CSV, e questo è solo un altro parametro che stiamo passando alle API. Un sacco di cose interessanti da fare. Consiglio vivamente il check-out la CS50 API. Vado a guardare a questa API Alimenti di Harvard, in particolare, per un po '. Una cosa che ho fatto è stato progettato questo sito Harvard Noms, che utilizza l'API CS50 alimentare per recuperare il menu HUDS per la giornata. E per la gente della scuola di estensione, HUDS è il servizio pranzo a Harvard. Quello che si ottiene è la pagina che contiene tutti i pasti della giornata, così vediamo il pranzo. Abbiamo poche categorie diverse. Abbiamo il fagiolo e la stazione di grano intero. Abbiamo la stazione di riso integrale. Possiamo vedere per il brunch abbiamo questi prodotti alimentari poche. Se si clicca su di loro, allora otteniamo le informazioni nutrizionali. Vedete questo è il informazioni nutrizionali per i pompelmi, nel caso ve lo stiate chiedendo. E così ancora una volta, stiamo andando a scrutare il back-end ecco un po ' e vedere che cosa sta facendo esattamente questo per ottenere questi dati. E si scopre di non essere in realtà molto complessa affatto. Questo file ha un aspetto un po 'disordinato, ma di tenere presente che questo si sta occupando l'intero sito web, e se io scorrere verso il basso si vede la funzione di modifica dei dati. Ora, tanto per essere chiari, questo è scritto in CoffeeScript, che è un linguaggio che probabilmente non avete mai visto prima. Ma è abbastanza leggibile, quindi vado a piedi attraverso di essa come se si trattasse di pseudocodice. Cambiare data è una funzione che sta andando a prendere in questo valore di data, ed è anche andando a prendere in una prima, che non si preoccupano tanto. Ma la cosa importante è che ha questa data, e che la data è il giorno che vogliamo la richiesta di tutti i prodotti alimentari per. E poi si vede che abbiamo un po 'di sintassi qui, che è fondamentalmente l'analisi di tale data in un formato leggibile. In altre parole, l'API richiede la data in un certo formato. Non si può semplicemente dire 16 Novembre 2012 AD. Non si sa cosa fare con questo. Vuole la data in un formato specifico. Tutto quello che stiamo facendo qui sta dando esattamente questo formato, che è un valore di anno e poi un trattino, un valore mesi, un altro trattino e il valore di data. E diciamo anche noi vogliamo che i dati siano output in JSON. Ora stiamo facendo questa richiesta AJAX, e come ho già detto in precedenza, jQuery ha questo super utile funzione AJAX che tutto quello che dovete fare è specificare alcuni parametri giù qui, e vi restituirà esattamente quello che vuoi. Lo stiamo dicendo che l'URL che vogliamo per andare a questo CS50 API Alimenti, che abbiamo ottenuto dalla spec. Diciamo che vogliamo i dati in JSON e che stiamo andando a dare questi dati che abbiamo definito qui. Questo è il giorno che vogliamo per i prodotti alimentari. E poi tutto quello che dobbiamo fare è definire una sorta di funzione di successo, che è fondamentalmente ciò che accade quando l'API restituisce i dati. In altre parole, abbiamo confezionato il backup di tutti i parametri che vogliamo, che in questo caso è il giorno che lo vogliamo e il fatto che lo vogliamo in JSON, e lo abbiamo mandato a l'API, così ora l'API sta dicendo, va bene, qui i dati, ho avuto di nuovo per voi. Abbiamo la funzione di successo, il che significa che il dato API ritorna con successo alcuni dati, che cosa ne facciamo? E si scopre che tutto ciò che facciamo è chiamare questa funzione del menu di aggiornamento con tutto ciò che l'API è tornato, in modo che possiamo cercare di e vedere che tutto quello che stiamo facendo sta usando un po 'di nuova sintassi qui per aggiornare il codice HTML e inserire questi nuovi dati. Ciò permette è che abbiamo queste frecce su entrambi i lati, e siamo in grado di fare clic su, e ora stiamo cercando i dati per il giorno successivo e di nuovo per il giorno successivo, e ogni volta è l'aggiornamento che il valore data e l'interrogazione l'API, tornare alcuni dati e di metterlo nel sito. Anche in questo caso, si può vedere, super, super utile. Questa applicazione mi ha portato un paio d'ore di hack insieme, e ho un po 'più di esperienza, ovviamente, ma il tuo progetto finale CS50 può guardare qualcosa di molto simile a questo. API sono super potente per la quantità di sforzo che prendono. L'ultima cosa che ho intenzione di andare oltre è alcune API più in generale. Non voglio arrivare fino in loro, per quanto quello che fanno in particolare, ma ti danno un'idea di quello che c'è là fuori. 2 quelli realmente utili, se siete interessati a analisi dei dati o la visualizzazione o qualcosa di simile, sono Freebase e Wikipedia. Wikipedia, presumibilmente tutti sapete, è un enciclopedia libera on-line, e in realtà ha un API, quindi se si vuole, ad esempio, ottenere tutti i testi e gli articoli per il polpo si può facilmente farlo. Basta dire hey, Wikipedia API, vorrei i dati restituiti come questo, e mi piacerebbe che in questo formato, e l'articolo che vorrei è polpo, e molto rapidamente vi darà indietro le informazioni. Questo può essere molto utile se si vuole fare una sorta di sito questo è un visualizzatore migliore per Wikipedia o qualcosa del genere. Freebase è una sorta di simile, anche se è un po 'più difficile, per quanto API. Freebase è come Wikipedia, in quanto è un enciclopedia online che contiene un sacco di dati diversi su ogni sorta di argomenti diversi, ma è memorizzato in un database relazionale, che è leggermente diverso da Wikipedia. Wikipedia ha i suoi articoli e articoli legati ad altri articoli, ma per la maggior parte, se si desidera che i dati per il polpo, si vai all'articolo polpo, ottenere che i dati, e si dispone di una porzione di testo circa polpi, in modo che è grande. Freebase funziona in modo leggermente più complicato dal fatto che tutto è in relazione tra loro. In altre parole, se siete alla ricerca per il polpo allora ha un mazzo di categorie ad esso associati. Ad esempio, è un animale, vive sott'acqua, ha una certa temperatura corporea. Non lo so. E tutte queste categorie sono collegamenti ad altri posti dove si può andare a vedere le cose con quella stessa categoria. In altre parole, l'insieme di dati polpo conterrà un collegamento al set di dati per tutti gli animali, e che mi permetteva di muoversi nel database molto velocemente. Questo può essere molto utile se si sta facendo qualcosa di simile confronto. In altre parole, data una certa cosa, vuoi vedere che altro è legato e vedere che altro non è relativa a. Questo genere di cose. Può essere utile in molti modi. Se siete alla ricerca di più di una sfida e di essere in grado di fare alcune cose più complesse Vorrei prendere in considerazione di dare un'occhiata alle API Freebase. Ma in gran parte, Wikipedia è un posto molto semplice per andare fino a ottenere informazioni. Un altro luogo che prenderò in esame è Last.fm, e sto andando a visitare il sito nel caso in cui alcune persone non hanno familiarità, ma Last.fm è fondamentalmente una musica gusti e sito web raccomandazioni. È possibile effettuare un account. Puoi iniziare a caricare musica dal vostro lettore musicale al sito web, e in fondo si avvierà dando consigli musicali in base a ciò che si ascolta. Ad esempio, se si va al tuo profilo, questo è il mio- si può vedere che avete una lista di recente ascoltato i brani. Potete vedere complessivi artisti preferiti, tutto questo genere di cose, e di nuovo, c'è un grande dietro API Last.fm,  e lo si può utilizzare per fare un sacco di cose davvero cool. Per esempio, vado alla pagina di un amico che ha questo sito Last.fm Strumenti. Questo è in realtà un'altra piattaforma che è costruito sul API Last.fm, e lo fa una serie di belle cose interessanti. Se il login con il mio nome utente, ad esempio, Posso chiedere di generare una tag cloud, ad esempio, e ciò che sta per fare è restituirmi l'immagine di tutti i diversi generi e quel genere di cose che mi piace ascoltare. Come sta facendo questo? Molto in fondo si sta dicendo alle API Last.fm ecco questo utente. Mi piacerebbe sapere il genere di ogni canzone che abbia mai sentito, e si può fare facendo una chiamata piuttosto semplice AJAX per l'API Last.fm. Potrai tornare una grande lista, e poi, ovviamente, un po 'di altre cose è stato fatto per trasformarlo in una nuvola parola, ma si può vedere nel complesso è molto facile accesso e molto facile da usare. Veramente bello per una serie di cose. Penso che è tutto quello che dirò in generale. Un'ultima cosa io vi ho citato sulle API in generale è che si a volte incorrere in qualcosa chiamato limitazione della velocità, e l'idea di limitazione della velocità è che non si vuole abusare API. In altre parole, è davvero bello che molti di questi siti hanno le API che si può andare e utilizzare gratuitamente. Tuttavia, se si sta facendo milioni o miliardi di richieste al giorno, per esempio, se sei bloccato in un ciclo infinito che è infinitamente interrogazione una sorta di API e il recupero di una quantità enorme di dati, ovviamente questo non va bene, quindi quello che un sacco di API fare è avere questo tasso funzione di limitazione che dice che si può fare solo 1.000 richieste al giorno per indirizzo IP o qualcosa del genere. E se si sta facendo un sacco di test e questo genere di cose, si a volte correre in quella, e improvvisamente vi spegne e dire di no, io non ti do altri dati. Quello che voglio fare è giocare secondo le regole. Si vuole fare in modo di leggere attentamente le specifiche API. Se ha determinate regole ad esso, come si può solo fare query al giorno X oppure si può accedere solo a una parte del database di un certo numero di volte o qualcosa del genere che si vuole fare in modo si tiene fede a questo. Fino a quando si gioca all'interno di quelle regole che probabilmente hanno un tempo veramente bello utilizzando le API. Il tuo asporto complessivo è API sono molto, molto utile. C'è una API per quasi tutti i servizi web grande là fuori. Praticamente qualsiasi parte del Strumenti Google Suite, Google Maps, Google Earth, GMail, Google Calendar, tutte queste cose hanno API. Si possono utilizzare sia ai dati get dal server e inviare i dati al server. In altre parole, se si voleva fare una applicazione calendario che è possibile aggiornare Google Calendar di qualcuno, c'è un API per questo. Se si vuole fare qualcosa che sta per dirvi dove la posizione di un certo indirizzo è che si può utilizzare l'API di Google Maps per questo. API sono incredibilmente utili, e sono ovunque. Se siete interessati a qualche tipo di idea, probabilmente c'è un API correlata che è possibile utilizzare per ottenere un sacco di dati molto rapidamente e in modo molto semplice. Se siete ancora alla ricerca di un progetto o se vuoi solo giocare un po ' con qualcosa in generale, le API sono sicuramente vale la pena fare. Grazie, e io sono felice di rispondere a tutte le domande che voi ragazzi possono avere. Va bene, grazie mille. [CS50.TV]