1 00:00:00,000 --> 00:00:02,480 [Powered by Google Translate] [Seminario] [Introduzione il programmatore ad una API] 2 00:00:02,480 --> 00:00:04,059 [Billy Janitsch] [Harvard University] [Tommy MacWilliam] 3 00:00:04,059 --> 00:00:08,220 [Questo è CS50.] [CS50.TV] 4 00:00:08,220 --> 00:00:12,100 >> Ciao a tutti, io sono Billy, e oggi ho intenzione di parlare di API, 5 00:00:12,100 --> 00:00:15,220 o interfacce di programmazione delle applicazioni, 6 00:00:15,220 --> 00:00:20,040 in particolare nel contesto di CS50 progetti finali e quel genere di cose. 7 00:00:20,040 --> 00:00:22,490 In generale, che cosa è un API? 8 00:00:22,490 --> 00:00:25,530 In termini molto generali, è una specie di un uomo di mezza che permette di 2 pezzi 9 00:00:25,530 --> 00:00:28,610 di software per comunicare con l'altro. 10 00:00:28,610 --> 00:00:32,530 Questa è una sorta di definizione molto ampia e non è così rilevante per quello che stiamo guardando. 11 00:00:32,530 --> 00:00:35,450 Quello che vuole veramente è una sorta di via di mezzo utile 12 00:00:35,450 --> 00:00:40,570 di comunicare con una sorta di banca dati da qualche parte. 13 00:00:40,570 --> 00:00:43,310 >> Ecco una tabella, e in fondo l'idea è che 14 00:00:43,310 --> 00:00:46,790 siamo una applicazione, e vogliamo ottenere dati da un database, 15 00:00:46,790 --> 00:00:49,570 ma non vogliamo per interrogare il database direttamente. 16 00:00:49,570 --> 00:00:52,710 Invece ci vogliono passare attraverso questo tipo di uomo medio, l'API. 17 00:00:52,710 --> 00:00:55,440 L'idea alla base è che i numeri 2 e 3 sul grafico 18 00:00:55,440 --> 00:00:57,750 sono entrambi sarà molto complicato e disordinato. 19 00:00:57,750 --> 00:00:59,960 In altre parole, quando l'API è interrogare il database, 20 00:00:59,960 --> 00:01:03,300 è probabilmente intenzione di utilizzare tabelle SQL e tutto quel genere di cose, 21 00:01:03,300 --> 00:01:05,489 e abbiamo imparato un po 'su di esso in CS50, ma nel complesso, 22 00:01:05,489 --> 00:01:07,590 avete notato che è un po 'di dolore. 23 00:01:07,590 --> 00:01:10,590 Diventa molto, molto complicato e disordinato, soprattutto quando si sta facendo 24 00:01:10,590 --> 00:01:12,530 query complesse e quel genere di cose. 25 00:01:12,530 --> 00:01:15,960 >> Quello che vuole veramente è una sorta di modo utile e semplice 26 00:01:15,960 --> 00:01:19,780 per ottenere tali dati, e questa è l'idea dietro i numeri 1 e 4 del grafico. 27 00:01:19,780 --> 00:01:23,600 In altre parole, vogliamo un modo davvero semplice per raccontare l'API per ottenere ciò che per noi 28 00:01:23,600 --> 00:01:27,760 e un modo molto semplice per ottenere che i dati indietro. 29 00:01:27,760 --> 00:01:33,020 C'è un modo principale che i dati vengono solitamente inviati e ricevuti, 30 00:01:33,020 --> 00:01:36,490 che è JSON, o JavaScript Object Notation. 31 00:01:36,490 --> 00:01:40,370 Questo può variare un po ', per quanto la modalità di invio della richiesta al API. 32 00:01:40,370 --> 00:01:43,210 In altre parole, se si vuole un certo certa quantità di dati, 33 00:01:43,210 --> 00:01:46,670 come dire l'API per ottenere che i dati possono variare un po '. 34 00:01:46,670 --> 00:01:49,210 Di solito si tratta di fare una sorta di richiesta di rete. 35 00:01:49,210 --> 00:01:53,130 In altre parole, l'accesso a un qualche tipo di URL che sta per raccontare la API 36 00:01:53,130 --> 00:01:56,190 esattamente quello che vuoi, ma i dati sono quasi sempre rimandato, 37 00:01:56,190 --> 00:01:59,530 in altre parole, il numero 4 in JSON. 38 00:01:59,530 --> 00:02:01,030 >> Che cosa è esattamente JSON? 39 00:02:01,030 --> 00:02:03,030 Come ho detto, JavaScript Object Notation. 40 00:02:03,030 --> 00:02:07,090 E 'fondamentalmente lo standard universale per la trasmissione e la ricezione dei dati. 41 00:02:07,090 --> 00:02:11,410 L'idea è che ci sono queste 3 categorie di cose. 42 00:02:11,410 --> 00:02:13,540 Hai array, HashMaps, e primitive. 43 00:02:13,540 --> 00:02:16,580 Matrici e HashMaps che hai guardato un po 'in CS50, 44 00:02:16,580 --> 00:02:19,870 ma hai ottenuto una sorta di un senso molto stretto di quello che sono. 45 00:02:19,870 --> 00:02:22,780 In altre parole, con le matrici si sa che stanno tipo legato, 46 00:02:22,780 --> 00:02:26,560 in modo da avere un solo tipo di tipo che va in tutto l'intero array. 47 00:02:26,560 --> 00:02:29,310 JSON è molto più indulgente con questo genere di cose. 48 00:02:29,310 --> 00:02:33,590 In sostanza l'idea è quella di costruire questo oggetto, 49 00:02:33,590 --> 00:02:36,270 che può essere composto da qualsiasi di queste 3 cose 50 00:02:36,270 --> 00:02:39,470 e può essere composto da più di quelli di loro, e possono essere annidate. 51 00:02:39,470 --> 00:02:42,110 >> Ecco una sorta di esempio di JSON, 52 00:02:42,110 --> 00:02:47,910 che queste parentesi graffe qui rappresentare il vostro HashMap, 53 00:02:47,910 --> 00:02:51,400 e un HashMap è fondamentalmente una mappatura da una sorta di chiave 54 00:02:51,400 --> 00:02:53,340 a una sorta di valore. 55 00:02:53,340 --> 00:02:56,440 Vedrete qui che abbiamo la chiave di proprietà, 56 00:02:56,440 --> 00:02:59,600 e che è la mappatura su un array, che è tutta questa cosa. 57 00:02:59,600 --> 00:03:04,120 Vediamo un altro elemento della hashmap, che è tale isAwesome chiave, 58 00:03:04,120 --> 00:03:07,370 che esegue il mapping a un valore di base di vero, in altre parole, un valore booleano. 59 00:03:07,370 --> 00:03:09,420 Le primitive possono essere stringhe. Possono essere numeri interi. 60 00:03:09,420 --> 00:03:11,960 Essi possono essere Caccio, qualcosa di simile. 61 00:03:11,960 --> 00:03:18,410 E vedi il contenuto di questa matrice che punta alla proprietà ha 2 stringhe in esso, 62 00:03:18,410 --> 00:03:20,050 auto-similare e meraviglioso. 63 00:03:20,050 --> 00:03:27,410 Questi sono 2 immobili di JSON, e vediamo che JSON è impressionante. 64 00:03:27,410 --> 00:03:30,060 Per vedere che un po 'più da vicino ho intenzione di costruire 65 00:03:30,060 --> 00:03:32,870 un esempio più complesso di JSON qui. 66 00:03:32,870 --> 00:03:37,000 >> Cominciamo con una matrice, per esempio, solo un array vuoto. 67 00:03:37,000 --> 00:03:39,180 Ma questo è una sorta di noioso, quindi stiamo andando a riempire un po ', 68 00:03:39,180 --> 00:03:43,420 e come ho detto, gli array in JSON sono di tipo associato, 69 00:03:43,420 --> 00:03:46,400 in modo da poter avere una stringa qui, che è hi, 70 00:03:46,400 --> 00:03:49,330 e questo è un altro elemento di tale matrice. 71 00:03:49,330 --> 00:03:53,450 E allo stesso modo, si potrebbe aggiungere un hashmapping qui, che sta per avere un paio di mappature. 72 00:03:53,450 --> 00:04:00,470 E 'intenzione di avere una mappatura da nome al Billy stringa. 73 00:04:00,470 --> 00:04:04,590 Abbiamo una mappatura da nome a Billy, e abbiamo una mappatura delle 74 00:04:04,590 --> 00:04:10,860 colore preferito al blu. 75 00:04:10,860 --> 00:04:12,700 Questo è fondamentalmente un buon esempio di JSON. 76 00:04:12,700 --> 00:04:18,160 Si ottiene in genere di-whoops, c'è bisogno di una virgola, tutte le diverse parti di essa. 77 00:04:18,160 --> 00:04:21,140 Anche in questo caso, non è tipo legato a tutti, in modo da poter avere qualsiasi tipo di tipi di 78 00:04:21,140 --> 00:04:24,710 dentro tutto quello che vuoi, e l'idea è che è auto-similare. 79 00:04:24,710 --> 00:04:28,830 In altre parole, questo qui è un oggetto JSON, come è tutta questa cosa, 80 00:04:28,830 --> 00:04:33,200 come è proprio questo, in modo da avere un primitivo essere un oggetto, 81 00:04:33,200 --> 00:04:35,680 un vettore essere un oggetto o una HashMap essere un oggetto. 82 00:04:35,680 --> 00:04:40,270 >> Come è possibile tipo di vedere, JSON è molto, molto utile in quanto è così versatile. 83 00:04:40,270 --> 00:04:45,860 Si possono avere tutti i dati possibili che è possibile concepire memorizzati in JSON. 84 00:04:45,860 --> 00:04:47,900 Questo lo rende un linguaggio davvero piacevole da usare con le API 85 00:04:47,900 --> 00:04:50,770 perché più o meno significa che non importa quali sono i dati che si desidera 86 00:04:50,770 --> 00:04:54,270 ci sarà un modo per farlo tornare in JSON. 87 00:04:54,270 --> 00:04:58,600 Alcune proprietà che lo rendono particolarmente indicato per JSON questo genere di cose. 88 00:04:58,600 --> 00:05:02,270 Come si può vedere, rispetto a un sacco di cose che hai lavorato con in CS50 89 00:05:02,270 --> 00:05:06,040 è relativamente facile da leggere e anche molto facile da scrivere. 90 00:05:06,040 --> 00:05:09,700 È possibile rientro se si vuole, come stavo facendo in questo esempio, 91 00:05:09,700 --> 00:05:12,990 che ti dà una bella, bella versione che si può vedere molto bene. 92 00:05:12,990 --> 00:05:17,150 Ma del resto, è anche facile da leggere e scrivere per un computer. 93 00:05:17,150 --> 00:05:19,870 In altre parole, è facile da analizzare e facile da codificare, 94 00:05:19,870 --> 00:05:23,820 il che significa che è abbastanza veloce per quanto riguarda la lettura dei dati è interessato, 95 00:05:23,820 --> 00:05:26,460 JSON e possono essere generati molto rapidamente. 96 00:05:26,460 --> 00:05:30,300 >> E 'anche molto facile da accedere a parti diverse di JSON e quel genere di cose. 97 00:05:30,300 --> 00:05:33,320 Che bello, e inoltre, il fatto che è auto-simile, 98 00:05:33,320 --> 00:05:36,090 in altre parole, il fatto che si può avere in JSON JSON in JSON 99 00:05:36,090 --> 00:05:40,040 è veramente bello per la memorizzazione dei dati. 100 00:05:40,040 --> 00:05:45,490 Un'altra parte che è generalmente molto utile per lavorare con le API è jQuery. 101 00:05:45,490 --> 00:05:49,290 Hai imparato un po 'di JavaScript, che è un bel modo 102 00:05:49,290 --> 00:05:53,710 per manipolare HTML e CSS all'interno di un sito web. 103 00:05:53,710 --> 00:05:57,190 Ma è possibile tipo di essere un dolore al codice JavaScript in modo chiaro, 104 00:05:57,190 --> 00:05:59,810 in gran parte perché JavaScript è un linguaggio molto prolisso. 105 00:05:59,810 --> 00:06:03,020 Devi imparare un sacco di sintassi, e solo per fare cose molto semplici 106 00:06:03,020 --> 00:06:07,590 ci vuole un sacco di codice, in modo da jQuery è una libreria JavaScript per. 107 00:06:07,590 --> 00:06:09,800 In altre parole, si tratta di un file JavaScript che è possibile caricare 108 00:06:09,800 --> 00:06:12,730 e quindi utilizzare le funzioni di jQuery per fare certe cose. 109 00:06:12,730 --> 00:06:15,670 E jQuery rende praticamente la vita molto più semplice. 110 00:06:15,670 --> 00:06:20,390 Semplifica ciò che avrebbe avuto centinaia di righe in JavaScript fino a poche righe in jQuery. 111 00:06:20,390 --> 00:06:24,430 >> E 'particolarmente utile se si sta utilizzando le API, perché in genere 112 00:06:24,430 --> 00:06:27,600 come si sarà l'accesso API è di fare richieste AJAX, 113 00:06:27,600 --> 00:06:30,130 e credo che David ha detto in conferenza che le richieste AJAX 114 00:06:30,130 --> 00:06:33,120 sono in genere quando stai facendo una richiesta di rete a una sorta di server 115 00:06:33,120 --> 00:06:37,760 e di tornare una sorta di dati e l'aggiornamento di una pagina istantaneamente. 116 00:06:37,760 --> 00:06:41,840 Considerando che, in JavaScript chiaro che avrebbe preso i numeri di linee folli 117 00:06:41,840 --> 00:06:44,620 per convalidare tutte le intestazioni e di fare tutto questo genere di cose, 118 00:06:44,620 --> 00:06:46,810 jQuery ha una funzione molto semplice chiamata AJAX, 119 00:06:46,810 --> 00:06:51,760 e tutto quello che dovete fare in AJAX è dare i parametri che si desidera dare l'API, 120 00:06:51,760 --> 00:06:56,830 la posizione della API e qualsiasi tipo ulteriore di opzioni che si desidera configurare. 121 00:06:56,830 --> 00:07:02,480 E 'molto, molto bello e molto utile per questo genere di cose. 122 00:07:02,480 --> 00:07:06,970 Questo è tutto quello che dobbiamo iniziare a ricevere le nostre mani sporche in API. 123 00:07:06,970 --> 00:07:10,220 >> Ho intenzione di far apparire alcuni esempi e di esplorare le loro diverse proprietà 124 00:07:10,220 --> 00:07:13,150 e perché sono utili per diversi tipi di cose. 125 00:07:13,150 --> 00:07:15,570 La prima cosa che troveremo a mostrarvi è una cosa che sto lavorando 126 00:07:15,570 --> 00:07:18,310 al mio laboratorio di ricerca, che è un visualizzatore Ngram, 127 00:07:18,310 --> 00:07:23,270 e in fondo l'idea di un visualizzatore Ngram è che si può cercare un qualche tipo di parola 128 00:07:23,270 --> 00:07:28,840 o una frase e vedere quante volte è apparso in un certo insieme di testo nel corso del tempo. 129 00:07:28,840 --> 00:07:33,160 Questo esempio qui è questo insieme di dati dei neonati 130 00:07:33,160 --> 00:07:36,480 che sono nati a New York tra il 1920 e il 2000. 131 00:07:36,480 --> 00:07:40,090 Si può cercare, ad esempio, per il nome Jennifer, 132 00:07:40,090 --> 00:07:44,400 e vediamo che pre-1960 in realtà non è stato utilizzato più di tanto, 133 00:07:44,400 --> 00:07:48,900 e poi come si ottiene in anni più tardi sta diventando sempre più utilizzato. 134 00:07:48,900 --> 00:07:53,680 Possiamo anche fare confronti, quindi se confrontiamo Jennifer, ad esempio, Thomas, 135 00:07:53,680 --> 00:07:56,520 possiamo vedere Thomas è stato abbastanza diffuso nel corso della storia, 136 00:07:56,520 --> 00:07:58,780 mentre Jennifer è un nome più recente. 137 00:07:58,780 --> 00:08:00,590 Possiamo fare questo genere di cose. 138 00:08:00,590 --> 00:08:02,460 >> Come funziona l'applicazione? 139 00:08:02,460 --> 00:08:06,030 In sostanza, funziona tramite una API. 140 00:08:06,030 --> 00:08:08,660 In altre parole, ci sono alcuni parametri. 141 00:08:08,660 --> 00:08:11,360 Abbiamo i parametri di quello che sta effettivamente cercando, 142 00:08:11,360 --> 00:08:13,720 quali sono questi nomi, e poi abbiamo alcune proprietà di altri, 143 00:08:13,720 --> 00:08:16,570 come l'asse Y e l'asse X. 144 00:08:16,570 --> 00:08:18,440 Si può vedere che abbiamo diverse possibilità per quanto riguarda la 145 00:08:18,440 --> 00:08:20,860 tempo di risoluzione da usare e questo genere di cose. 146 00:08:20,860 --> 00:08:26,700 Ci sono queste opzioni, per quanto i dati che vogliamo davvero dal database, 147 00:08:26,700 --> 00:08:29,400 e vogliamo ottenere che i dati di nuovo in qualche modo utile. 148 00:08:29,400 --> 00:08:34,020 Di solito, se stessimo interrogando direttamente il database sarebbe sorta di essere un dolore per fare 149 00:08:34,020 --> 00:08:38,970 presumibilmente perché questi dati su nomi del bambino vive in qualche database da qualche parte, 150 00:08:38,970 --> 00:08:42,789 e sarebbe davvero complicato dover interrogare manualmente 151 00:08:42,789 --> 00:08:45,830 e decidere esattamente quali dati da restituire. 152 00:08:45,830 --> 00:08:49,300 In altre parole, ci interessa solo Jennifer e Thomas, in questo caso, 153 00:08:49,300 --> 00:08:53,410 e ci preoccupiamo soltanto su un determinato asse e tutto questo genere di cose. 154 00:08:53,410 --> 00:08:55,720 >> Come si arriva a questo? 155 00:08:55,720 --> 00:09:01,200 Per scavare in questa API un po 'di più ti faccio vedere un altro esempio di questa piattaforma 156 00:09:01,200 --> 00:09:04,490 che utilizza un insieme di dati leggermente diverso. 157 00:09:04,490 --> 00:09:09,950 Questo insieme di dati, invece di essere nomi del bambino, è in realtà solo l'intera 158 00:09:09,950 --> 00:09:12,460 stampare database di pubblicazione di Open Library, 159 00:09:12,460 --> 00:09:18,410 che è una fonte enorme di testi pubblicati nel corso degli ultimi 100 anni o così. 160 00:09:18,410 --> 00:09:23,540 L'idea è che abbiamo questo compositiva di milioni e milioni di testo, 161 00:09:23,540 --> 00:09:27,420 che ora possiamo cercare diverse parole e frasi poll 162 00:09:27,420 --> 00:09:30,840 Ecco un esempio che varia un po 'diverso dal precedente esempio 163 00:09:30,840 --> 00:09:33,350 Ti ho mostrato, che abbiamo questi 3 query di ricerca, 164 00:09:33,350 --> 00:09:36,290 la guerra, la guerra, e la parola francese per la guerra, che è guerre. 165 00:09:36,290 --> 00:09:40,380 E stiamo cercando nel raggio di 3 diverse sezioni del totale del database. 166 00:09:40,380 --> 00:09:45,080 In altre parole, in questa prima query che stiamo cercando solo negli Stati Uniti, 167 00:09:45,080 --> 00:09:51,150 nella seconda solo nel Regno Unito, e la terza solo da opere pubblicate in Francia. 168 00:09:51,150 --> 00:09:53,120 Vediamo alcuni modelli interessanti emergono. 169 00:09:53,120 --> 00:09:58,180 Per esempio, vediamo che proprio da queste parti- 170 00:09:58,180 --> 00:10:02,410 oops, ho fatto un casino l'asse un po ', ma si può vedere a destra in questa fascia di qui 171 00:10:02,410 --> 00:10:05,730 intorno alla guerra civile c'è un grande picco nella edizione americana 172 00:10:05,730 --> 00:10:08,340 ma non un grande picco nelle altre due, e questo è ovviamente perché 173 00:10:08,340 --> 00:10:10,880 la guerra civile americana che stava accadendo in quel punto. 174 00:10:10,880 --> 00:10:13,890 >> Possiamo vedere un po 'di cose interessanti lì, 175 00:10:13,890 --> 00:10:17,070 ma quello che ci interessa davvero è il modo che abbiamo ottenuto questi dati. 176 00:10:17,070 --> 00:10:21,320 Ti porterò dietro le quinte di questa applicazione in un po '. 177 00:10:21,320 --> 00:10:24,540 Un buon trucco è se si sta lavorando con il sito e il tipo di esigenza di conoscere 178 00:10:24,540 --> 00:10:27,430 cosa sta succedendo dietro le quinte, è possibile aprire gli strumenti di sviluppo. 179 00:10:27,430 --> 00:10:30,200 Ho intenzione di utilizzare Chrome strumenti di sviluppo, e per arrivare a quelli 180 00:10:30,200 --> 00:10:35,160 si può fare il controllo, cambio, J, e che porta alla console JavaScript. 181 00:10:35,160 --> 00:10:37,420 Ci sono un paio di schede qui. 182 00:10:37,420 --> 00:10:39,680 Essi possono essere molto utile in diverse circostanze, ma mi interessa la rete 183 00:10:39,680 --> 00:10:44,150 scheda in questo momento, e io in realtà essere necessario aggiornare per ottenere quel lavoro. 184 00:10:44,150 --> 00:10:50,180 Oh, mi dispiace. 185 00:10:50,180 --> 00:10:52,320 Ama per dare un esempio a caso. 186 00:10:52,320 --> 00:10:54,700 Ok, useremo questo esempio invece poi. 187 00:10:54,700 --> 00:11:01,330 >> L'idea è che c'è questa API qui, 188 00:11:01,330 --> 00:11:05,330 e si può vedere esattamente ciò che l'API sta tornando. 189 00:11:05,330 --> 00:11:10,220 Questo è ciò che l'applicazione è tornare dalle API che ha inviato la richiesta. 190 00:11:10,220 --> 00:11:13,680 Vorrei ingrandire un po ', 191 00:11:13,680 --> 00:11:18,340 e possiamo vedere in fondo è solo una serie di coppie di valori chiave in JSON. 192 00:11:18,340 --> 00:11:23,220 In altre parole, abbiamo questa hashmap qui che è la mappatura dei valori. 193 00:11:23,220 --> 00:11:26,440 In altre parole, è la mappatura anni per valori. 194 00:11:26,440 --> 00:11:32,600 Nel 1765 qualunque parola che inizialmente cercato è usato 90 volte 195 00:11:32,600 --> 00:11:35,810 di 1 milione, quindi stiamo tornando questo risultato. 196 00:11:35,810 --> 00:11:40,280 Non è esattamente JSON dal momento che abbiamo questa intestazione piccolo risultato qui, 197 00:11:40,280 --> 00:11:45,630 ma si noti che questo oggetto tutto qui è solo un grande grande blob JSON. 198 00:11:45,630 --> 00:11:51,070 Abbiamo qui una serie che contiene questo elemento intero, 199 00:11:51,070 --> 00:11:55,590 e si può vedere che l'elemento intero finisce lì, e poi abbiamo un altro elemento di grande 200 00:11:55,590 --> 00:11:59,430 che va tutta la strada fino alla fine, e che finisce qui. 201 00:11:59,430 --> 00:12:02,200 Abbiamo una gamma molto grande con 2 oggetti in esso contenuti, 202 00:12:02,200 --> 00:12:04,630 e ciascuno di questi oggetti è un HashMap. 203 00:12:04,630 --> 00:12:07,340 Si può vedere all'interno di ciascuna di queste HashMaps abbiamo una mappatura 204 00:12:07,340 --> 00:12:12,700 di questo valore di indice a 0 e il valore di questo valore a un altro HashMap, 205 00:12:12,700 --> 00:12:18,360 che ancora una volta è la mappatura dei valori dell'asse X per i valori dell'asse Y. 206 00:12:18,360 --> 00:12:20,970 >> Potete vedere JSON diventa un po 'complicato, ma nel complesso, 207 00:12:20,970 --> 00:12:24,190 in realtà è molto utile, ed è molto facile accesso rispetto al 208 00:12:24,190 --> 00:12:27,390 altre forme di notazione. 209 00:12:27,390 --> 00:12:30,550 Per quanto riguarda ciò che sta effettivamente l'invio dei dati per l'API per ottenere, 210 00:12:30,550 --> 00:12:34,690 Ho intenzione di entrare nel back-end un po 'qui. 211 00:12:34,690 --> 00:12:39,850 Questo è il file JavaScript che grande è la gestione di tutte le interazioni del web app, 212 00:12:39,850 --> 00:12:44,810 e quindi non si preoccupano più di questo, ma si preoccupano un po '. 213 00:12:44,810 --> 00:12:47,410 Per esempio, abbiamo a cuore questa funzione BuildQuery, 214 00:12:47,410 --> 00:12:50,670 e l'idea di questa funzione è fondamentalmente che sta cercando all'interno della pagina, 215 00:12:50,670 --> 00:12:53,750 capire cosa l'utente vuole interrogare, in altre parole, 216 00:12:53,750 --> 00:12:57,090 controllo quelle scatole dove sono inserire i propri termini di ricerca, 217 00:12:57,090 --> 00:13:01,380 controllando i diversi valori Y e asse X che hanno scelto e tutto questo genere di cose, 218 00:13:01,380 --> 00:13:06,650 e sta andando a sputare il valore della query, che può quindi inviare al API. 219 00:13:06,650 --> 00:13:09,180 >> Questo sembra complicato, ed è piuttosto complicato 220 00:13:09,180 --> 00:13:18,090 ma che cosa ho intenzione di fare, anzi, sto già facendo, che è grande- 221 00:13:18,090 --> 00:13:21,640 è che io vado a prendere la console per stampare esattamente questo valore della query 222 00:13:21,640 --> 00:13:28,110 che è espulsione per l'API. 223 00:13:28,110 --> 00:13:30,870 Che in realtà è proprio qui. Ci dispiace, emette un sacco di cose. 224 00:13:30,870 --> 00:13:33,690 Ma questo è ciò che ci preoccupa, questo oggetto qui. 225 00:13:33,690 --> 00:13:35,300 Questo è l'oggetto query. 226 00:13:35,300 --> 00:13:40,670 In altre parole, questo è esattamente ciò che l'applicazione web sta inviando alle API, 227 00:13:40,670 --> 00:13:45,730 e quindi cerchiamo di guardare dentro un po ', e vediamo che abbiamo alcuni valori qui. 228 00:13:45,730 --> 00:13:48,710 Vediamo abbiamo questo tipo di conteggio, che è eventi per milione di parole, 229 00:13:48,710 --> 00:13:51,460 che è esattamente quello che abbiamo scelto l'asse Y qui. 230 00:13:51,460 --> 00:13:53,740 Ecco dove che viene. 231 00:13:53,740 --> 00:13:58,010 Abbiamo un valore del database, il che significa che c'è qualche determinato database 232 00:13:58,010 --> 00:14:01,610 che questi dati siano vivere, e vogliamo accedere ai dati specificamente 233 00:14:01,610 --> 00:14:04,950 a differenza dei dati bambino nomi, per esempio. 234 00:14:04,950 --> 00:14:08,320 Poi ci sono i gruppi di questo valore, 235 00:14:08,320 --> 00:14:12,090 che è tutto dire che vogliamo la ricerca per anno rispetto a 236 00:14:12,090 --> 00:14:16,030 qualsiasi altro valore dell'asse X. 237 00:14:16,030 --> 00:14:19,040 Poi abbiamo un metodo che alcune API fanno cose diverse. 238 00:14:19,040 --> 00:14:22,360 In altre parole, questa API può anche restituire altri tipi di dati, 239 00:14:22,360 --> 00:14:27,740 ma in questo caso, vogliamo che la mappatura di valori degli assi X, che i valori dell'asse Y. 240 00:14:27,740 --> 00:14:30,730 Questo è ciò che sta dicendo di fare lì, 241 00:14:30,730 --> 00:14:35,020 e abbiamo questa matrice di ricerca limiti, che contiene 2 valori. 242 00:14:35,020 --> 00:14:40,720 Il primo è quello che vediamo qui, che è tutti i valori 243 00:14:40,720 --> 00:14:43,020 contenuti nella casella prima piccola in alto. 244 00:14:43,020 --> 00:14:47,570 >> In altre parole, vogliamo cercare la parola battaglia, e noi vogliamo filtrarla 245 00:14:47,570 --> 00:14:51,920 da testi in lingua inglese all'interno della letteratura americana. 246 00:14:51,920 --> 00:14:54,590 Abbiamo questo paese, che è Stati Uniti d'America. 247 00:14:54,590 --> 00:14:59,130 Abbiamo una lingua, che è inglese, quindi abbiamo tutte queste diverse parti 248 00:14:59,130 --> 00:15:02,690 che sono tutti dicendo la API esattamente quello che vogliamo. 249 00:15:02,690 --> 00:15:04,940 Non sappiamo quali sono i dati che otteniamo è ancora indietro, 250 00:15:04,940 --> 00:15:10,970 ma sappiamo che i dati sta andando a prendere una certa forma. 251 00:15:10,970 --> 00:15:13,650 Questo esempio è una sorta di lato complicata, 252 00:15:13,650 --> 00:15:16,180 e non si sarebbe necessariamente utilizzare una API questo complesso, 253 00:15:16,180 --> 00:15:20,600 ma questo è quello di mostrare la gamma e la potenza di ciò che può fare API. 254 00:15:20,600 --> 00:15:24,980 In altre parole, utilizzando un sistema di interrogazione relativamente semplice che, fondamentalmente, sono una casella di input 255 00:15:24,980 --> 00:15:29,490 con selettori pochi altri in luoghi diversi. 256 00:15:29,490 --> 00:15:32,010 >> Vorrei Click qui. 257 00:15:32,010 --> 00:15:37,720 Abbiamo una casella di input con alcune selezioni di metadati differenti, 258 00:15:37,720 --> 00:15:40,610 e abbiamo l'asse Y e asse X selezioni. 259 00:15:40,610 --> 00:15:42,830 Noi in realtà non hanno campi che molti, 260 00:15:42,830 --> 00:15:46,210 e possiamo vedere molto facilmente siamo in grado di interrogare una sorta di API 261 00:15:46,210 --> 00:15:48,510 e ottenere i dati indietro e poi metterlo in questa tabella, 262 00:15:48,510 --> 00:15:52,080 che viene poi andare a visualizzare in modo utile. 263 00:15:52,080 --> 00:15:54,970 Per vedere un altro esempio che potrebbe essere un po 'più familiare a voi ragazzi 264 00:15:54,970 --> 00:15:56,510 stiamo andando a girare su Facebook. 265 00:15:56,510 --> 00:15:59,440 API di Facebook si chiama il grafico di Facebook, 266 00:15:59,440 --> 00:16:04,390 e in fondo ciò che significa è Facebook si vede come questo enorme database 267 00:16:04,390 --> 00:16:08,000 di lotti di pezzi differenti che hanno certe relazioni tra loro. 268 00:16:08,000 --> 00:16:11,070 In altre parole, io sono un utente su Facebook, quindi ho un profilo, 269 00:16:11,070 --> 00:16:14,310 e ho anche alcuni amici, e ciascuna di esse ha un profilo, 270 00:16:14,310 --> 00:16:17,580 e ciascuno dei miei amici ha una parete, che presenta diverse osservazioni su di esso, 271 00:16:17,580 --> 00:16:20,800 e ciascuna di queste osservazioni ha simpatie e tutto questo genere di cose. 272 00:16:20,800 --> 00:16:23,100 >> C'è un sacco di parti diverse su Facebook. 273 00:16:23,100 --> 00:16:26,670 E 'un API estremamente complessa, e ci sono tonnellate che si possono fare con esso, 274 00:16:26,670 --> 00:16:28,450 ma in realtà è piuttosto semplice da usare. 275 00:16:28,450 --> 00:16:33,680 Ho intenzione di iniziare andando a graph.facebook.com / billyjanitsch, 276 00:16:33,680 --> 00:16:38,430 che è il mio nome account univoco, e il tuo nome account potrà essere 277 00:16:38,430 --> 00:16:43,710 una sorta di parola se hai scelto, o potrebbe essere solo una stringa di numeri. 278 00:16:43,710 --> 00:16:46,360 Che torniamo sono informazioni piuttosto semplice. 279 00:16:46,360 --> 00:16:50,460 Si vede che ho un nome, che è Billy, un cognome, che è Janitsch. 280 00:16:50,460 --> 00:16:53,370 C'è un ID univoco Facebook che ho. 281 00:16:53,370 --> 00:16:57,920 Si può vedere che io sono maschio e che ho la mia impostazione della lingua 282 00:16:57,920 --> 00:17:01,290 di inglese britannico. 283 00:17:01,290 --> 00:17:03,490 In altre parole, stiamo assistendo ad informazioni di base qui. 284 00:17:03,490 --> 00:17:08,670 Non è troppo, ma ci dà un'idea di quello che c'è. 285 00:17:08,670 --> 00:17:10,849 >> Possiamo fare la stessa cosa per David Malan, per esempio. 286 00:17:10,849 --> 00:17:13,599 Credo che il suo nome è dmalan. 287 00:17:13,599 --> 00:17:16,369 Vediamo David Malan ha un ID univoco. 288 00:17:16,369 --> 00:17:19,300 Ha un nome, cognome, nome, cognome. 289 00:17:19,300 --> 00:17:24,210 Vediamo anche che lui è maschio e ha il suo set di lingua inglese. 290 00:17:24,210 --> 00:17:26,869 In altre parole, stiamo assistendo ad informazioni piuttosto semplice qui. 291 00:17:26,869 --> 00:17:28,860 Ora, cosa succede se cerchiamo di controllare qualcos'altro? 292 00:17:28,860 --> 00:17:33,060 Diciamo che sono interessato a ciò che David Malan ha gradito su Facebook. 293 00:17:33,060 --> 00:17:36,860 Che posso fare / piace. Ora abbiamo incontrato un problema. 294 00:17:36,860 --> 00:17:39,280 Abbiamo una sorta di errore che dice che un token di accesso 295 00:17:39,280 --> 00:17:41,660 è tenuto a richiedere questa risorsa. 296 00:17:41,660 --> 00:17:44,730 Ma se ci pensate, che rende effettivamente senso perché sarebbe strano 297 00:17:44,730 --> 00:17:47,830 se si potesse accedere ad ogni singola parte del database di Facebook 298 00:17:47,830 --> 00:17:50,170 solo da una sorta di API semplice, giusto? 299 00:17:50,170 --> 00:17:56,040 In altre parole, probabilmente i tuoi dati non sono accessibili da chiunque lo voglia. 300 00:17:56,040 --> 00:17:58,330 >> Questo errore è precisamente ciò che significa. 301 00:17:58,330 --> 00:18:03,630 Alcune API richiedono determinate autorizzazioni, al fine di accedere ai propri dati. 302 00:18:03,630 --> 00:18:06,940 E API ancora più avanzato, come Facebook uno, 303 00:18:06,940 --> 00:18:09,840 richiede determinate autorizzazioni di fare certe cose. 304 00:18:09,840 --> 00:18:12,650 Riesco a vedere queste informazioni di base su David Malan. 305 00:18:12,650 --> 00:18:15,950 Mi rendo conto che lui è maschio e che vive negli Stati Uniti, 306 00:18:15,950 --> 00:18:19,270 ma non riesco a vedere niente passato. 307 00:18:19,270 --> 00:18:23,050 Per ovviare a questo, per ora, Facebook ha questo strumento bella 308 00:18:23,050 --> 00:18:27,690 che è il grafico API esploratore, e l'idea di che è possibile ordinare di 309 00:18:27,690 --> 00:18:31,880 rendere le autorizzazioni per te, sulla base di conto 310 00:18:31,880 --> 00:18:35,680 e poi vedere le cose in modo specifico il tuo account possono visualizzare. 311 00:18:35,680 --> 00:18:45,120 Per esempio, se faccio graph.facebook.com/billyjanitsch/likes- 312 00:18:45,120 --> 00:18:53,510 whoops, credo che devo rinnovare il mio gettone qui. 313 00:18:53,510 --> 00:18:55,950 Va bene. 314 00:18:55,950 --> 00:19:01,740 Se lo faccio di nuovo, grande, ora vedo che ottengo questo oggetto indietro 315 00:19:01,740 --> 00:19:06,300 che dice che mi piace tagliatelle piscina, che sono nella categoria Giochi e passatempi. 316 00:19:06,300 --> 00:19:08,620 Mi piace trichechi, che sono nella categoria degli animali. 317 00:19:08,620 --> 00:19:10,180 Questi sono i miei gusti reali Facebook. 318 00:19:10,180 --> 00:19:13,280 Sono un po 'imbarazzante. 319 00:19:13,280 --> 00:19:16,090 >> Ma possiamo vedere questi dati sono tornati tutti in JSON. 320 00:19:16,090 --> 00:19:18,160 E 'abbastanza leggibile. 321 00:19:18,160 --> 00:19:20,970 In altre parole, abbiamo questa mappatura dei dati a una sorta di una matrice, 322 00:19:20,970 --> 00:19:25,220 e ogni elemento di questo array è una HashMap che mappa 323 00:19:25,220 --> 00:19:28,530 il nome di un simile e la categoria di un come. 324 00:19:28,530 --> 00:19:31,240 Ogni come ha un ID univoco. 325 00:19:31,240 --> 00:19:34,510 Ci sono un sacco di cose diverse di dati che si possono ottenere, 326 00:19:34,510 --> 00:19:37,980 e se siete interessati ad utilizzare l'API di Facebook per un progetto definitivo CS50 327 00:19:37,980 --> 00:19:40,720 o per qualcosa di simile in realtà è abbastanza fattibile. 328 00:19:40,720 --> 00:19:44,260 In pratica come si ottiene intorno alla cosa di autenticazione è Facebook 329 00:19:44,260 --> 00:19:48,030 utilizza un sistema chiamato OAuth, o autenticazione aperta, 330 00:19:48,030 --> 00:19:52,870 e io non voglio entrare in ora perché OAuth o il diverso tipo 331 00:19:52,870 --> 00:19:56,060 di autenticazione tende a variare molto tra le diverse API, 332 00:19:56,060 --> 00:19:58,320 così ho potuto passare molto tempo andando su ognuno, 333 00:19:58,320 --> 00:20:01,170 ma sono in realtà piuttosto auto-esplicativo. 334 00:20:01,170 --> 00:20:04,050 >> Se Google API di Facebook è molto leggibile. 335 00:20:04,050 --> 00:20:06,670 C'è una specifica intero. 336 00:20:06,670 --> 00:20:10,210 Ad esempio, questa è la documentazione per le API di Facebook, 337 00:20:10,210 --> 00:20:14,170 e si può vedere sono sulla pagina utente, in modo da poter imparare tutto sui diversi tipi di cose 338 00:20:14,170 --> 00:20:17,170 che sono disponibili per ottenere i dati per quanto 339 00:20:17,170 --> 00:20:21,550 e anche le autorizzazioni diverse di cui ho bisogno per poter accedervi. 340 00:20:21,550 --> 00:20:25,470 Come abbiamo visto, non abbiamo bisogno di autorizzazioni per accedere al nome o il genere, 341 00:20:25,470 --> 00:20:29,380 ma oltre a questo abbiamo bisogno di autorizzazioni per la maggior parte delle cose. 342 00:20:29,380 --> 00:20:33,040 Questa pagina, o meglio, questo sito vi dirà anche come arrivare 343 00:20:33,040 --> 00:20:35,640 un token per essere in grado di autenticarsi. 344 00:20:35,640 --> 00:20:39,290 Maggior parte dei sistemi di autenticazione utilizzare una sorta di token 345 00:20:39,290 --> 00:20:42,880 dove si ottiene il valore unico, che è una stringa molto lunga e casuale, 346 00:20:42,880 --> 00:20:46,240 e in questo modo si può associare la richiesta che si sta facendo con te. 347 00:20:46,240 --> 00:20:50,560 In altre parole, sanno che non stai facendo nulla di sospetto con i loro dati. 348 00:20:50,560 --> 00:20:53,340 Sanno esattamente quello che stai ricevendo. 349 00:20:53,340 --> 00:20:56,180 Sanno anche che si è autorizzati a visualizzare tali informazioni. 350 00:20:56,180 --> 00:20:59,110 >> Se hai fatto una applicazione Facebook e la vostra applicazione ha alcuni utenti, 351 00:20:59,110 --> 00:21:03,380 e gli utilizzatori hanno permesso che app per accedere a determinate parti del loro profilo, 352 00:21:03,380 --> 00:21:07,790 allora qualunque API chiave o token che tale applicazione utilizza 353 00:21:07,790 --> 00:21:11,090 saranno in grado di accedere ai dati per gli utenti. 354 00:21:11,090 --> 00:21:13,780 Questo potrebbe sembrare complicato, ma non è troppo male, 355 00:21:13,780 --> 00:21:16,810 e se si desidera utilizzare Facebook vi consiglio vivamente di 356 00:21:16,810 --> 00:21:18,990 considerare a giocare con le loro API. 357 00:21:18,990 --> 00:21:21,610 E 'molto fresco, e si può fare un sacco di cose diverse con esso. 358 00:21:21,610 --> 00:21:24,880 Se l'utente si concede queste autorizzazioni si può anche tornare alla API 359 00:21:24,880 --> 00:21:28,820 e dire che voglio postare effettivamente al muro di questo utente, o voglio farli pubblicare una foto, 360 00:21:28,820 --> 00:21:32,390 ed è per questo sul tuo feed di notizie a volte si ottiene quelle cose fastidiose 361 00:21:32,390 --> 00:21:37,840 dicendo il tuo amico ha visto questo video su una sorta di sito strano o qualcosa del genere. 362 00:21:37,840 --> 00:21:43,120 Questo perché tale applicazione è stato concesso l'accesso per lasciare sul muro di quella persona. 363 00:21:43,120 --> 00:21:48,350 L'idea generale, l'API di Facebook è piuttosto complicato, ma anche molto utile. 364 00:21:48,350 --> 00:21:53,220 Sicuramente la pena di verificare se siete ancora alla ricerca di un progetto finale. 365 00:21:53,220 --> 00:21:57,930 >> Un altro insieme di API che ho intenzione di andare oltre è CS50 API. 366 00:21:57,930 --> 00:22:00,070 Vorrei ingrandire qui. 367 00:22:00,070 --> 00:22:03,390 CS50 ha effettivamente messo insieme tutta una serie di API 368 00:22:03,390 --> 00:22:07,080 che è possibile utilizzare per un progetto finale o solo per tutto ciò che stai facendo. 369 00:22:07,080 --> 00:22:12,830 E sono per lo più relativi ad Harvard, e variano dal menu HUDS, 370 00:22:12,830 --> 00:22:17,780 per esempio, a questa Harvard eventi API, che ti consente di accedere a un elenco di 371 00:22:17,780 --> 00:22:21,290 diversi eventi che sono in corso a Harvard e quel genere di cose. 372 00:22:21,290 --> 00:22:24,510 E così siamo in grado di fare clic su uno qualsiasi di questi e ottenere una specifica per esso, 373 00:22:24,510 --> 00:22:28,090 che sarete in grado di trovare per qualsiasi API, e l'idea è 374 00:22:28,090 --> 00:22:33,920 che ti permette di conoscere, A, in particolare quello di chiedere l'API e come richiederlo. 375 00:22:33,920 --> 00:22:37,370 In altre parole, se voglio tutti gli eventi che stanno accadendo domani 376 00:22:37,370 --> 00:22:42,550 poi ho avuto modo di dare, ovviamente, quella data che voglio in un certo formato, 377 00:22:42,550 --> 00:22:46,030 e B, che mi dirà esattamente quello che sta per dare a me. 378 00:22:46,030 --> 00:22:48,590 Si dirà che sto per tornare voi questo oggetto JSON, 379 00:22:48,590 --> 00:22:50,960 o come si può vedere, ci sono diversi formati. 380 00:22:50,960 --> 00:22:54,050 >> È inoltre possibile restituire i dati come CSV, per esempio. 381 00:22:54,050 --> 00:22:57,620 Ma si sa esattamente come i dati che sta andando a guardare quando lo si ottiene indietro 382 00:22:57,620 --> 00:23:00,610 così ci si può aspettare di fare certe cose con esso. 383 00:23:00,610 --> 00:23:07,240 Siamo in grado di scorrere verso il basso e vedere, per esempio, se si vuole interrogare l'API 384 00:23:07,240 --> 00:23:11,500 per ottenere un calendario, allora possiamo utilizzare questo URL particolare 385 00:23:11,500 --> 00:23:16,480 e dare alcuni parametri che stanno per essere i dati che vogliamo esattamente. 386 00:23:16,480 --> 00:23:19,540 E allo stesso modo, se si desidera che i dati di nuovo in un certo formato, 387 00:23:19,540 --> 00:23:23,790 allora possiamo chiedere di trasmettere i dati in un file CSV, 388 00:23:23,790 --> 00:23:27,700 e questo è solo un altro parametro che stiamo passando alle API. 389 00:23:27,700 --> 00:23:29,210 Un sacco di cose interessanti da fare. 390 00:23:29,210 --> 00:23:32,550 Consiglio vivamente il check-out la CS50 API. 391 00:23:32,550 --> 00:23:36,000 >> Vado a guardare a questa API Alimenti di Harvard, in particolare, per un po '. 392 00:23:36,000 --> 00:23:39,870 Una cosa che ho fatto è stato progettato questo sito Harvard Noms, 393 00:23:39,870 --> 00:23:44,930 che utilizza l'API CS50 alimentare per recuperare il menu HUDS per la giornata. 394 00:23:44,930 --> 00:23:50,400 E per la gente della scuola di estensione, HUDS è il servizio pranzo a Harvard. 395 00:23:50,400 --> 00:23:55,130 Quello che si ottiene è la pagina che contiene tutti i pasti della giornata, così vediamo il pranzo. 396 00:23:55,130 --> 00:23:58,130 Abbiamo poche categorie diverse. Abbiamo il fagiolo e la stazione di grano intero. 397 00:23:58,130 --> 00:24:00,340 Abbiamo la stazione di riso integrale. 398 00:24:00,340 --> 00:24:03,360 Possiamo vedere per il brunch abbiamo questi prodotti alimentari poche. 399 00:24:03,360 --> 00:24:07,030 Se si clicca su di loro, allora otteniamo le informazioni nutrizionali. 400 00:24:07,030 --> 00:24:12,240 Vedete questo è il informazioni nutrizionali per i pompelmi, nel caso ve lo stiate chiedendo. 401 00:24:12,240 --> 00:24:14,870 E così ancora una volta, stiamo andando a scrutare il back-end ecco un po ' 402 00:24:14,870 --> 00:24:18,530 e vedere che cosa sta facendo esattamente questo per ottenere questi dati. 403 00:24:18,530 --> 00:24:21,710 E si scopre di non essere in realtà molto complessa affatto. 404 00:24:21,710 --> 00:24:28,720 Questo file ha un aspetto un po 'disordinato, ma di tenere presente che questo si sta occupando l'intero sito web, 405 00:24:28,720 --> 00:24:34,130 e se io scorrere verso il basso si vede la funzione di modifica dei dati. 406 00:24:34,130 --> 00:24:36,630 >> Ora, tanto per essere chiari, questo è scritto in CoffeeScript, 407 00:24:36,630 --> 00:24:39,570 che è un linguaggio che probabilmente non avete mai visto prima. 408 00:24:39,570 --> 00:24:44,810 Ma è abbastanza leggibile, quindi vado a piedi attraverso di essa come se si trattasse di pseudocodice. 409 00:24:44,810 --> 00:24:49,080 Cambiare data è una funzione che sta andando a prendere in questo valore di data, 410 00:24:49,080 --> 00:24:51,740 ed è anche andando a prendere in una prima, che non si preoccupano tanto. 411 00:24:51,740 --> 00:24:54,110 Ma la cosa importante è che ha questa data, 412 00:24:54,110 --> 00:25:00,080 e che la data è il giorno che vogliamo la richiesta di tutti i prodotti alimentari per. 413 00:25:00,080 --> 00:25:04,030 E poi si vede che abbiamo un po 'di sintassi qui, 414 00:25:04,030 --> 00:25:09,000 che è fondamentalmente l'analisi di tale data in un formato leggibile. 415 00:25:09,000 --> 00:25:11,920 In altre parole, l'API richiede la data in un certo formato. 416 00:25:11,920 --> 00:25:17,390 Non si può semplicemente dire 16 Novembre 2012 AD. 417 00:25:17,390 --> 00:25:20,320 Non si sa cosa fare con questo. Vuole la data in un formato specifico. 418 00:25:20,320 --> 00:25:23,230 Tutto quello che stiamo facendo qui sta dando esattamente questo formato, 419 00:25:23,230 --> 00:25:26,520 che è un valore di anno e poi un trattino, un valore mesi, 420 00:25:26,520 --> 00:25:29,420 un altro trattino e il valore di data. 421 00:25:29,420 --> 00:25:34,910 E diciamo anche noi vogliamo che i dati siano output in JSON. 422 00:25:34,910 --> 00:25:37,560 >> Ora stiamo facendo questa richiesta AJAX, e come ho già detto in precedenza, 423 00:25:37,560 --> 00:25:41,680 jQuery ha questo super utile funzione AJAX che tutto quello che dovete fare è specificare 424 00:25:41,680 --> 00:25:45,780 alcuni parametri giù qui, e vi restituirà esattamente quello che vuoi. 425 00:25:45,780 --> 00:25:50,490 Lo stiamo dicendo che l'URL che vogliamo per andare a questo CS50 API Alimenti, 426 00:25:50,490 --> 00:25:52,270 che abbiamo ottenuto dalla spec. 427 00:25:52,270 --> 00:25:56,730 Diciamo che vogliamo i dati in JSON e che 428 00:25:56,730 --> 00:25:59,490 stiamo andando a dare questi dati che abbiamo definito qui. 429 00:25:59,490 --> 00:26:02,670 Questo è il giorno che vogliamo per i prodotti alimentari. 430 00:26:02,670 --> 00:26:07,790 E poi tutto quello che dobbiamo fare è definire una sorta di funzione di successo, 431 00:26:07,790 --> 00:26:11,980 che è fondamentalmente ciò che accade quando l'API restituisce i dati. 432 00:26:11,980 --> 00:26:15,490 In altre parole, abbiamo confezionato il backup di tutti i parametri che vogliamo, 433 00:26:15,490 --> 00:26:20,530 che in questo caso è il giorno che lo vogliamo e il fatto che lo vogliamo in JSON, 434 00:26:20,530 --> 00:26:23,840 e lo abbiamo mandato a l'API, così ora l'API sta dicendo, va bene, 435 00:26:23,840 --> 00:26:26,350 qui i dati, ho avuto di nuovo per voi. 436 00:26:26,350 --> 00:26:29,930 Abbiamo la funzione di successo, il che significa che il dato API 437 00:26:29,930 --> 00:26:32,230 ritorna con successo alcuni dati, che cosa ne facciamo? 438 00:26:32,230 --> 00:26:35,980 >> E si scopre che tutto ciò che facciamo è chiamare questa funzione del menu di aggiornamento 439 00:26:35,980 --> 00:26:42,680 con tutto ciò che l'API è tornato, in modo che possiamo cercare di 440 00:26:42,680 --> 00:26:47,970 e vedere che tutto quello che stiamo facendo sta usando un po 'di nuova sintassi qui 441 00:26:47,970 --> 00:26:52,220 per aggiornare il codice HTML e inserire questi nuovi dati. 442 00:26:52,220 --> 00:26:56,580 Ciò permette è che abbiamo queste frecce su entrambi i lati, e siamo in grado di fare clic su, 443 00:26:56,580 --> 00:27:01,060 e ora stiamo cercando i dati per il giorno successivo e di nuovo per il giorno successivo, 444 00:27:01,060 --> 00:27:04,820 e ogni volta è l'aggiornamento che il valore data e l'interrogazione l'API, 445 00:27:04,820 --> 00:27:07,510 tornare alcuni dati e di metterlo nel sito. 446 00:27:07,510 --> 00:27:10,590 Anche in questo caso, si può vedere, super, super utile. 447 00:27:10,590 --> 00:27:14,410 Questa applicazione mi ha portato un paio d'ore di hack insieme, 448 00:27:14,410 --> 00:27:20,140 e ho un po 'più di esperienza, ovviamente, ma il tuo progetto finale CS50 449 00:27:20,140 --> 00:27:22,870 può guardare qualcosa di molto simile a questo. 450 00:27:22,870 --> 00:27:29,540 >> API sono super potente per la quantità di sforzo che prendono. 451 00:27:29,540 --> 00:27:32,800 L'ultima cosa che ho intenzione di andare oltre è alcune API più in generale. 452 00:27:32,800 --> 00:27:35,480 Non voglio arrivare fino in loro, per quanto quello che fanno in particolare, 453 00:27:35,480 --> 00:27:38,740 ma ti danno un'idea di quello che c'è là fuori. 454 00:27:38,740 --> 00:27:42,700 2 quelli realmente utili, se siete interessati a analisi dei dati o la visualizzazione 455 00:27:42,700 --> 00:27:45,960 o qualcosa di simile, sono Freebase e Wikipedia. 456 00:27:45,960 --> 00:27:49,800 Wikipedia, presumibilmente tutti sapete, è un enciclopedia libera on-line, 457 00:27:49,800 --> 00:27:53,230 e in realtà ha un API, quindi se si vuole, ad esempio, 458 00:27:53,230 --> 00:27:56,250 ottenere tutti i testi e gli articoli per il polpo 459 00:27:56,250 --> 00:27:58,030 si può facilmente farlo. 460 00:27:58,030 --> 00:28:02,300 Basta dire hey, Wikipedia API, vorrei i dati restituiti come questo, 461 00:28:02,300 --> 00:28:07,010 e mi piacerebbe che in questo formato, e l'articolo che vorrei è polpo, 462 00:28:07,010 --> 00:28:09,820 e molto rapidamente vi darà indietro le informazioni. 463 00:28:09,820 --> 00:28:12,230 Questo può essere molto utile se si vuole fare una sorta di sito 464 00:28:12,230 --> 00:28:16,200 questo è un visualizzatore migliore per Wikipedia o qualcosa del genere. 465 00:28:16,200 --> 00:28:21,350 >> Freebase è una sorta di simile, anche se è un po 'più difficile, per quanto API. 466 00:28:21,350 --> 00:28:24,390 Freebase è come Wikipedia, in quanto è un enciclopedia online 467 00:28:24,390 --> 00:28:29,050 che contiene un sacco di dati diversi su ogni sorta di argomenti diversi, 468 00:28:29,050 --> 00:28:33,150 ma è memorizzato in un database relazionale, che è leggermente diverso da Wikipedia. 469 00:28:33,150 --> 00:28:36,410 Wikipedia ha i suoi articoli e articoli legati ad altri articoli, 470 00:28:36,410 --> 00:28:38,860 ma per la maggior parte, se si desidera che i dati per il polpo, 471 00:28:38,860 --> 00:28:41,990 si vai all'articolo polpo, ottenere che i dati, e si dispone di una porzione di testo 472 00:28:41,990 --> 00:28:43,830 circa polpi, in modo che è grande. 473 00:28:43,830 --> 00:28:46,870 Freebase funziona in modo leggermente più complicato dal fatto che 474 00:28:46,870 --> 00:28:48,930 tutto è in relazione tra loro. 475 00:28:48,930 --> 00:28:52,620 In altre parole, se siete alla ricerca per il polpo 476 00:28:52,620 --> 00:28:54,940 allora ha un mazzo di categorie ad esso associati. 477 00:28:54,940 --> 00:28:57,920 >> Ad esempio, è un animale, vive sott'acqua, 478 00:28:57,920 --> 00:28:59,710 ha una certa temperatura corporea. 479 00:28:59,710 --> 00:29:01,210 Non lo so. 480 00:29:01,210 --> 00:29:04,230 E tutte queste categorie sono collegamenti ad altri posti dove si può andare 481 00:29:04,230 --> 00:29:06,640 a vedere le cose con quella stessa categoria. 482 00:29:06,640 --> 00:29:13,450 In altre parole, l'insieme di dati polpo conterrà un collegamento al set di dati per tutti gli animali, 483 00:29:13,450 --> 00:29:16,790 e che mi permetteva di muoversi nel database molto velocemente. 484 00:29:16,790 --> 00:29:21,740 Questo può essere molto utile se si sta facendo qualcosa di simile confronto. 485 00:29:21,740 --> 00:29:24,490 In altre parole, data una certa cosa, vuoi vedere 486 00:29:24,490 --> 00:29:27,890 che altro è legato e vedere che altro non è relativa a. 487 00:29:27,890 --> 00:29:30,700 Questo genere di cose. Può essere utile in molti modi. 488 00:29:30,700 --> 00:29:34,250 Se siete alla ricerca di più di una sfida e di essere in grado di fare alcune cose più complesse 489 00:29:34,250 --> 00:29:38,740 Vorrei prendere in considerazione di dare un'occhiata alle API Freebase. 490 00:29:38,740 --> 00:29:44,670 Ma in gran parte, Wikipedia è un posto molto semplice per andare fino a ottenere informazioni. 491 00:29:44,670 --> 00:29:48,340 Un altro luogo che prenderò in esame è Last.fm, e sto andando a visitare il sito 492 00:29:48,340 --> 00:29:53,800 nel caso in cui alcune persone non hanno familiarità, ma Last.fm è fondamentalmente una musica 493 00:29:53,800 --> 00:29:57,220 gusti e sito web raccomandazioni. 494 00:29:57,220 --> 00:29:59,000 È possibile effettuare un account. 495 00:29:59,000 --> 00:30:04,250 Puoi iniziare a caricare musica dal vostro lettore musicale 496 00:30:04,250 --> 00:30:08,020 al sito web, e in fondo si avvierà dando consigli musicali 497 00:30:08,020 --> 00:30:10,030 in base a ciò che si ascolta. 498 00:30:10,030 --> 00:30:14,270 >> Ad esempio, se si va al tuo profilo, questo è il mio- 499 00:30:14,270 --> 00:30:18,180 si può vedere che avete una lista di recente ascoltato i brani. 500 00:30:18,180 --> 00:30:22,550 Potete vedere complessivi artisti preferiti, tutto questo genere di cose, 501 00:30:22,550 --> 00:30:25,280 e di nuovo, c'è un grande dietro API Last.fm, 502 00:30:25,280 --> 00:30:29,360  e lo si può utilizzare per fare un sacco di cose davvero cool. 503 00:30:29,360 --> 00:30:38,870 Per esempio, vado alla pagina di un amico che ha questo sito Last.fm Strumenti. 504 00:30:38,870 --> 00:30:42,380 Questo è in realtà un'altra piattaforma che è costruito sul API Last.fm, 505 00:30:42,380 --> 00:30:45,420 e lo fa una serie di belle cose interessanti. 506 00:30:45,420 --> 00:30:50,260 Se il login con il mio nome utente, ad esempio, 507 00:30:50,260 --> 00:30:53,110 Posso chiedere di generare una tag cloud, ad esempio, 508 00:30:53,110 --> 00:30:56,480 e ciò che sta per fare è restituirmi l'immagine di 509 00:30:56,480 --> 00:30:59,850 tutti i diversi generi e quel genere di cose che mi piace ascoltare. 510 00:30:59,850 --> 00:31:01,410 Come sta facendo questo? 511 00:31:01,410 --> 00:31:05,670 Molto in fondo si sta dicendo alle API Last.fm ecco questo utente. 512 00:31:05,670 --> 00:31:10,710 Mi piacerebbe sapere il genere di ogni canzone che abbia mai sentito, 513 00:31:10,710 --> 00:31:15,130 e si può fare facendo una chiamata piuttosto semplice AJAX per l'API Last.fm. 514 00:31:15,130 --> 00:31:18,990 Potrai tornare una grande lista, e poi, ovviamente, un po 'di altre cose è stato fatto 515 00:31:18,990 --> 00:31:22,280 per trasformarlo in una nuvola parola, ma si può vedere nel complesso 516 00:31:22,280 --> 00:31:25,850 è molto facile accesso e molto facile da usare. 517 00:31:25,850 --> 00:31:30,750 Veramente bello per una serie di cose. 518 00:31:30,750 --> 00:31:35,940 >> Penso che è tutto quello che dirò in generale. 519 00:31:35,940 --> 00:31:39,040 Un'ultima cosa io vi ho citato sulle API in generale è che 520 00:31:39,040 --> 00:31:41,840 si a volte incorrere in qualcosa chiamato limitazione della velocità, 521 00:31:41,840 --> 00:31:44,940 e l'idea di limitazione della velocità è che non si vuole abusare API. 522 00:31:44,940 --> 00:31:48,130 In altre parole, è davvero bello che molti di questi siti hanno le API 523 00:31:48,130 --> 00:31:51,070 che si può andare e utilizzare gratuitamente. 524 00:31:51,070 --> 00:31:54,460 Tuttavia, se si sta facendo milioni o miliardi di richieste al giorno, 525 00:31:54,460 --> 00:31:57,610 per esempio, se sei bloccato in un ciclo infinito che è infinitamente interrogazione 526 00:31:57,610 --> 00:32:00,680 una sorta di API e il recupero di una quantità enorme di dati, 527 00:32:00,680 --> 00:32:04,570 ovviamente questo non va bene, quindi quello che un sacco di API fare è avere questo tasso funzione di limitazione 528 00:32:04,570 --> 00:32:09,970 che dice che si può fare solo 1.000 richieste al giorno per indirizzo IP o qualcosa del genere. 529 00:32:09,970 --> 00:32:12,540 E se si sta facendo un sacco di test e questo genere di cose, 530 00:32:12,540 --> 00:32:14,890 si a volte correre in quella, e improvvisamente vi spegne 531 00:32:14,890 --> 00:32:18,280 e dire di no, io non ti do altri dati. 532 00:32:18,280 --> 00:32:20,000 >> Quello che voglio fare è giocare secondo le regole. 533 00:32:20,000 --> 00:32:22,950 Si vuole fare in modo di leggere attentamente le specifiche API. 534 00:32:22,950 --> 00:32:26,330 Se ha determinate regole ad esso, come si può solo fare query al giorno X 535 00:32:26,330 --> 00:32:30,000 oppure si può accedere solo a una parte del database di un certo numero di volte 536 00:32:30,000 --> 00:32:32,900 o qualcosa del genere che si vuole fare in modo si tiene fede a questo. 537 00:32:32,900 --> 00:32:38,360 Fino a quando si gioca all'interno di quelle regole che probabilmente hanno un tempo veramente bello utilizzando le API. 538 00:32:38,360 --> 00:32:42,030 Il tuo asporto complessivo è API sono molto, molto utile. 539 00:32:42,030 --> 00:32:45,610 >> C'è una API per quasi tutti i servizi web grande là fuori. 540 00:32:45,610 --> 00:32:50,700 Praticamente qualsiasi parte del Strumenti Google Suite, Google Maps, Google Earth, 541 00:32:50,700 --> 00:32:54,390 GMail, Google Calendar, tutte queste cose hanno API. 542 00:32:54,390 --> 00:32:58,280 Si possono utilizzare sia ai dati get dal server e inviare i dati al server. 543 00:32:58,280 --> 00:33:00,870 In altre parole, se si voleva fare una applicazione calendario che è possibile aggiornare 544 00:33:00,870 --> 00:33:04,190 Google Calendar di qualcuno, c'è un API per questo. 545 00:33:04,190 --> 00:33:07,810 Se si vuole fare qualcosa che sta per dirvi dove 546 00:33:07,810 --> 00:33:12,530 la posizione di un certo indirizzo è che si può utilizzare l'API di Google Maps per questo. 547 00:33:12,530 --> 00:33:15,860 API sono incredibilmente utili, e sono ovunque. 548 00:33:15,860 --> 00:33:18,700 Se siete interessati a qualche tipo di idea, 549 00:33:18,700 --> 00:33:22,170 probabilmente c'è un API correlata che è possibile utilizzare per ottenere un sacco di dati 550 00:33:22,170 --> 00:33:25,060 molto rapidamente e in modo molto semplice. 551 00:33:25,060 --> 00:33:28,140 >> Se siete ancora alla ricerca di un progetto o se vuoi solo giocare un po ' 552 00:33:28,140 --> 00:33:31,820 con qualcosa in generale, le API sono sicuramente vale la pena fare. 553 00:33:31,820 --> 00:33:37,200 Grazie, e io sono felice di rispondere a tutte le domande che voi ragazzi possono avere. 554 00:33:37,200 --> 00:33:44,900 Va bene, grazie mille. 555 00:33:44,900 --> 00:33:48,000 [CS50.TV]