1 00:00:00,000 --> 00:00:02,480 [Powered by Google Translate] [Seminario] [Introdución dun desenvolvedor de APIs] 2 00:00:02,480 --> 00:00:04,059 [Billy Janitsch] [Harvard University] [Tommy MacWilliam] 3 00:00:04,059 --> 00:00:08,220 [Esta é CS50.] [CS50.TV] 4 00:00:08,220 --> 00:00:12,100 >> Ola, todos, eu son o Billy, e hoxe eu vou estar fala de APIs, 5 00:00:12,100 --> 00:00:15,220 ou interfaces de programación de aplicacións, 6 00:00:15,220 --> 00:00:20,040 especialmente no contexto da CS50 proxectos finais e ese tipo de cousas. 7 00:00:20,040 --> 00:00:22,490 En xeral o que é unha API? 8 00:00:22,490 --> 00:00:25,530 En termos moi xerais, é unha especie de home de media que permite que dúas pezas 9 00:00:25,530 --> 00:00:28,610 de software para comunicarse uns cos outros. 10 00:00:28,610 --> 00:00:32,530 Isto é un tipo de definición moi ampla e non é tan relevante para o que estamos mirando. 11 00:00:32,530 --> 00:00:35,450 O que realmente queremos é unha especie de medio termo útil 12 00:00:35,450 --> 00:00:40,570 para comunicarse con algún tipo de base de datos nalgún lugar. 13 00:00:40,570 --> 00:00:43,310 >> Aquí está o gráfico, e, basicamente, a idea é que 14 00:00:43,310 --> 00:00:46,790 somos unha aplicación, e queremos obter datos a partir dun banco de datos, 15 00:00:46,790 --> 00:00:49,570 pero non desexa consultar o banco de datos directamente. 16 00:00:49,570 --> 00:00:52,710 En vez diso, quero pasar por este tipo de home medio, a API. 17 00:00:52,710 --> 00:00:55,440 A idea detrás diso é os números 2 e 3 do gráfico 18 00:00:55,440 --> 00:00:57,750 son ambos vai ser moi complicado e confuso. 19 00:00:57,750 --> 00:00:59,960 Noutras palabras, cando a API está consultando a base de datos, 20 00:00:59,960 --> 00:01:03,300 el probabelmente vai estar usando táboas SQL e todos este tipo de cousas, 21 00:01:03,300 --> 00:01:05,489 e aprendemos un pouco sobre iso no CS50, pero en xeral, 22 00:01:05,489 --> 00:01:07,590 entender que é un pouco de dor. 23 00:01:07,590 --> 00:01:10,590 El está moi, moi complicado e confuso, especialmente cando se está facendo 24 00:01:10,590 --> 00:01:12,530 consultas complexas e ese tipo de cousas. 25 00:01:12,530 --> 00:01:15,960 >> O que realmente queremos é algún tipo de forma útil e sinxelo 26 00:01:15,960 --> 00:01:19,780 para obter estes datos, e esa é a idea detrás de números 1 e 4 do gráfico. 27 00:01:19,780 --> 00:01:23,600 Noutras palabras, queremos un xeito moi sinxelo de dicir o que a API para obter a nós 28 00:01:23,600 --> 00:01:27,760 e un xeito realmente sinxelo de obter os datos de volta. 29 00:01:27,760 --> 00:01:33,020 Hai un xeito principal, que normalmente é de que os datos enviados e recibidos, 30 00:01:33,020 --> 00:01:36,490 que é JSON ou JavaScript Object Notation. 31 00:01:36,490 --> 00:01:40,370 Que pode variar un pouco, tanto como como enviar a solicitude para a API. 32 00:01:40,370 --> 00:01:43,210 Noutras palabras, se quere algunha certa cantidade de datos, 33 00:01:43,210 --> 00:01:46,670 como dicir a API para obter os datos poden variar un pouco. 34 00:01:46,670 --> 00:01:49,210 Normalmente, implica a realización de calquera tipo de solicitude de rede. 35 00:01:49,210 --> 00:01:53,130 Noutras palabras, o acceso a algún tipo de URL que vai contar a API 36 00:01:53,130 --> 00:01:56,190 exactamente o que quere, pero os datos son case sempre enviados de volta, 37 00:01:56,190 --> 00:01:59,530 noutras palabras, o número 4 JSON. 38 00:01:59,530 --> 00:02:01,030 >> ¿Que é JSON exactamente? 39 00:02:01,030 --> 00:02:03,030 Como dixen, JavaScript Object Notation. 40 00:02:03,030 --> 00:02:07,090 É basicamente o patrón universal para transmisión e recepción de datos. 41 00:02:07,090 --> 00:02:11,410 A idea é que ten esas tres categorías de cousas. 42 00:02:11,410 --> 00:02:13,540 Tes matrices, HashMaps, e primitivos. 43 00:02:13,540 --> 00:02:16,580 Matrices e HashMaps mirou un pouco no CS50, 44 00:02:16,580 --> 00:02:19,870 pero especie de obter un sentido moi estrito do que son. 45 00:02:19,870 --> 00:02:22,780 Noutras palabras, con matrices que vostede sabe que eles están tipo encadernado, 46 00:02:22,780 --> 00:02:26,560 así só ten unha especie de tipo que vai ao longo da matriz enteira. 47 00:02:26,560 --> 00:02:29,310 JSON é moito máis tolerante con este tipo de cousas. 48 00:02:29,310 --> 00:02:33,590 Basicamente, a idea é que construír este obxecto, 49 00:02:33,590 --> 00:02:36,270 que pode ser composto de calquera destas tres cousas 50 00:02:36,270 --> 00:02:39,470 e pode ser composto de varios dos entes, e poden ser aniñados. 51 00:02:39,470 --> 00:02:42,110 >> Aquí é unha especie de un exemplo de JSON, 52 00:02:42,110 --> 00:02:47,910 que é esas claves aquí representan o HashMap, 53 00:02:47,910 --> 00:02:51,400 e un HashMap é basicamente un mapeamento a partir de calquera tipo de chave 54 00:02:51,400 --> 00:02:53,340 a algún tipo de valor. 55 00:02:53,340 --> 00:02:56,440 Vai ver aquí que temos a clave propiedades, 56 00:02:56,440 --> 00:02:59,600 e que está mapeando para unha matriz, que é esa cousa toda. 57 00:02:59,600 --> 00:03:04,120 Vemos outro elemento do HashMap, que é este isAwesome clave, 58 00:03:04,120 --> 00:03:07,370 que mapea a un valor primitivo de verdade, noutras palabras, un booleano. 59 00:03:07,370 --> 00:03:09,420 Primitivas poden ser strings. Eles poden ser números enteiros. 60 00:03:09,420 --> 00:03:11,960 Eles poden ser bools, algo así. 61 00:03:11,960 --> 00:03:18,410 E ve o contido deste matriz que apunta a propiedades ten dúas cordas na mesma, 62 00:03:18,410 --> 00:03:20,050 auto-similar e marabilloso. 63 00:03:20,050 --> 00:03:27,410 Estas son dúas propiedades de JSON, e vemos que o JSON é impresionante. 64 00:03:27,410 --> 00:03:30,060 Para ollar que un pouco máis de preto eu vou construír 65 00:03:30,060 --> 00:03:32,870 un exemplo máis complexo de JSON aquí. 66 00:03:32,870 --> 00:03:37,000 >> Imos comezar por unha matriz, por exemplo, só unha matriz baleira. 67 00:03:37,000 --> 00:03:39,180 Pero iso é tipo de chat, por iso estamos indo a enche-lo un pouco, 68 00:03:39,180 --> 00:03:43,420 e como eu dixen, as matrices no JSON son do tipo vinculado, 69 00:03:43,420 --> 00:03:46,400 para que pudéssemos ter unha secuencia aquí, que é oi, 70 00:03:46,400 --> 00:03:49,330 e este é outro elemento desta matriz. 71 00:03:49,330 --> 00:03:53,450 E do mesmo xeito, poderiamos engadir un hashmapping aquí, que vai ter un mapeamento poucos. 72 00:03:53,450 --> 00:04:00,470 El vai ter un mapeamento de nome para o Billy cadea. 73 00:04:00,470 --> 00:04:04,590 Temos un mapeamento de nome para Billy, e nós temos un mapeamento de 74 00:04:04,590 --> 00:04:10,860 cor favorita para azul. 75 00:04:10,860 --> 00:04:12,700 Iso é basicamente un bo exemplo de JSON. 76 00:04:12,700 --> 00:04:18,160 É o tipo de entra-ops, precisa dunha vírgula alí, todas as distintas partes do mesmo. 77 00:04:18,160 --> 00:04:21,140 Unha vez máis, non está obrigado a escribir todos, de modo que pode ter calquera tipo de tipo de 78 00:04:21,140 --> 00:04:24,710 dentro de todo o que queira, ea idea é que é auto-similar. 79 00:04:24,710 --> 00:04:28,830 Noutras palabras, iso aquí é un obxecto JSON, como é esa cousa toda, 80 00:04:28,830 --> 00:04:33,200 como é só iso, entón vostede pode ter un primitivo ser un obxecto, 81 00:04:33,200 --> 00:04:35,680 unha matriz ser un obxecto ou un HashMap ser un obxecto. 82 00:04:35,680 --> 00:04:40,270 >> Como pode tipo de ver, JSON é moi, moi útil na medida en que é tan versátil. 83 00:04:40,270 --> 00:04:45,860 Pode ter todos os posibles datos que pode concibir almacenados en JSON. 84 00:04:45,860 --> 00:04:47,900 Isto o fai unha linguaxe moi agradable de usar con APIs 85 00:04:47,900 --> 00:04:50,770 porque practicamente significa que non importa o que os datos que quere 86 00:04:50,770 --> 00:04:54,270 alí vai haber algunha maneira de recuperala-lo en JSON. 87 00:04:54,270 --> 00:04:58,600 Algunhas propiedades que fan JSON particularmente bo para este tipo de cousas. 88 00:04:58,600 --> 00:05:02,270 Como podes ver, en comparación con unha morea de cousas que está a traballar coa CS50 89 00:05:02,270 --> 00:05:06,040 é comparativamente moi fácil de ler e moi doado de escribir. 90 00:05:06,040 --> 00:05:09,700 Pode recuar para fóra se quere, como eu estaba facendo nese exemplo, 91 00:05:09,700 --> 00:05:12,990 que lle dá unha versión moi agradable que se pode ver moi ben. 92 00:05:12,990 --> 00:05:17,150 Pero ademais, tamén é doado de ler e escribir nun ordenador. 93 00:05:17,150 --> 00:05:19,870 Noutras palabras, é fácil de analizar e doado de codificar, 94 00:05:19,870 --> 00:05:23,820 o que significa que é moi fácil, tanto como a lectura de datos está en causa, 95 00:05:23,820 --> 00:05:26,460 e JSON pode ser xerado moi rapidamente. 96 00:05:26,460 --> 00:05:30,300 >> É tamén moi fácil de acceder diferentes partes do JSON e ese tipo de cousas. 97 00:05:30,300 --> 00:05:33,320 Isto é bo, e, ademais, o feito de que é auto-similar, 98 00:05:33,320 --> 00:05:36,090 noutras palabras, o feito de que pode que dentro de JSON JSON dentro JSON 99 00:05:36,090 --> 00:05:40,040 é moi bo para almacenamento de datos. 100 00:05:40,040 --> 00:05:45,490 Outra parte que xeralmente é moi útil no traballo con APIs e jQuery. 101 00:05:45,490 --> 00:05:49,290 Aprendeu un pouco de JavaScript, que é unha boa forma 102 00:05:49,290 --> 00:05:53,710 para manipular HTML e CSS dentro dun sitio web. 103 00:05:53,710 --> 00:05:57,190 Pero pode tipo de ser unha dor de código en JavaScript puro, 104 00:05:57,190 --> 00:05:59,810 en gran parte, porque o Javascript é unha linguaxe moi detallado. 105 00:05:59,810 --> 00:06:03,020 Vostede ten que aprender unha morea de sintaxe, e só para facer cousas moi simples 106 00:06:03,020 --> 00:06:07,590 el ten unha morea de código, polo tanto, é unha biblioteca jQuery para JavaScript. 107 00:06:07,590 --> 00:06:09,800 Noutras palabras, é un arquivo JavaScript que podes cargar 108 00:06:09,800 --> 00:06:12,730 e entón usar as funcións jQuery para facer certas cousas. 109 00:06:12,730 --> 00:06:15,670 JQuery e basicamente fai a súa vida moito máis fácil. 110 00:06:15,670 --> 00:06:20,390 El simplifica o que levaría centos de liñas en JavaScript para abaixo algunhas liñas en jQuery. 111 00:06:20,390 --> 00:06:24,430 >> El é especialmente útil se está usando APIs porque xeralmente 112 00:06:24,430 --> 00:06:27,600 como vai estar accedendo APIs e facendo solicitudes de AJAX, 113 00:06:27,600 --> 00:06:30,130 e eu creo que David mencionou charla que solicitudes de AJAX 114 00:06:30,130 --> 00:06:33,120 son xeralmente cando está facendo unha solicitude de rede para algún tipo de servidor 115 00:06:33,120 --> 00:06:37,760 e volver algún tipo de datos e actualización da páxina instantaneamente. 116 00:06:37,760 --> 00:06:41,840 Considerando que, en JavaScript simple que levaría números tolos de liñas 117 00:06:41,840 --> 00:06:44,620 para validar todas as cabeceiras e facer todo ese tipo de cousas, 118 00:06:44,620 --> 00:06:46,810 jQuery ten unha función moi sinxelo chamado AJAX, 119 00:06:46,810 --> 00:06:51,760 e todo o que ten que facer en AJAX é dar os parámetros que quere dar a API, 120 00:06:51,760 --> 00:06:56,830 a localización da API e calquera tipo adicional de opcións que quere configurar. 121 00:06:56,830 --> 00:07:02,480 É moi, moi bo e moi útil para este tipo de cousas. 122 00:07:02,480 --> 00:07:06,970 Isto é todo o que necesitamos para comezar a recibir as nosas mans sucias en APIs 123 00:07:06,970 --> 00:07:10,220 >> Vou traer algúns exemplos e explotar as súas propiedades diferentes 124 00:07:10,220 --> 00:07:13,150 e por que son útiles para diferentes tipos de cousas. 125 00:07:13,150 --> 00:07:15,570 A primeira cousa que vai realmente mostrar a vostede é algo que eu estou a traballar en 126 00:07:15,570 --> 00:07:18,310 no meu laboratorio de investigación, que é un visualizador de ngram, 127 00:07:18,310 --> 00:07:23,270 e, basicamente, a idea dun visor de ngram é que pode buscar algún tipo de palabra 128 00:07:23,270 --> 00:07:28,840 ou frase para ver cantas veces apareceu nun determinado conxunto de texto ao longo do tempo. 129 00:07:28,840 --> 00:07:33,160 Este exemplo aquí é o conxunto de datos de bebés 130 00:07:33,160 --> 00:07:36,480 que naceu en Nova York entre 1920 e 2000. 131 00:07:36,480 --> 00:07:40,090 Podemos investigar, por exemplo, o nome de Jennifer, 132 00:07:40,090 --> 00:07:44,400 e vemos que o pre-1960 realmente non foi usada tanto así, 133 00:07:44,400 --> 00:07:48,900 e despois como entramos en anos posteriores que se está facendo cada vez máis utilizado. 134 00:07:48,900 --> 00:07:53,680 Tamén podemos facer comparacións, por iso, se compararmos Jennifer, por exemplo, Thomas, 135 00:07:53,680 --> 00:07:56,520 podemos ver Thomas foi bastante prevalente ao longo da historia, 136 00:07:56,520 --> 00:07:58,780 mentres que Jennifer é un nome máis recente. 137 00:07:58,780 --> 00:08:00,590 Podemos facer este tipo de cousas. 138 00:08:00,590 --> 00:08:02,460 >> Como funciona esta aplicación? 139 00:08:02,460 --> 00:08:06,030 Basicamente, funciona a través dunha API. 140 00:08:06,030 --> 00:08:08,660 Noutras palabras, podemos ter certos parámetros aquí. 141 00:08:08,660 --> 00:08:11,360 Temos os parámetros que estamos realmente buscando, 142 00:08:11,360 --> 00:08:13,720 cales son eses nomes, e entón temos algunhas propiedades de outros, 143 00:08:13,720 --> 00:08:16,570 como o eixe Y é o eixe dos x. 144 00:08:16,570 --> 00:08:18,440 Podes ver, temos algunhas opcións diferentes, tanto como o 145 00:08:18,440 --> 00:08:20,860 resolución de tempo de usar e que tipo de cousas. 146 00:08:20,860 --> 00:08:26,700 Temos estas opcións, tanto como os datos que queremos realmente da base de datos, 147 00:08:26,700 --> 00:08:29,400 e queremos obter os datos de volta, dalgunha forma útil. 148 00:08:29,400 --> 00:08:34,020 Normalmente, se estivésemos consultando a base de datos directamente sería clasificar de ser unha dor de facer 149 00:08:34,020 --> 00:08:38,970 porque presuntamente datos sobre nomes de bebé vive en algún base de datos nalgún lugar, 150 00:08:38,970 --> 00:08:42,789 e sería moi complicado ter que consultalo-lo manualmente 151 00:08:42,789 --> 00:08:45,830 e decidir exactamente cales datos para voltar. 152 00:08:45,830 --> 00:08:49,300 Noutras palabras, só se preocupan Jennifer e Thomas, neste caso, 153 00:08:49,300 --> 00:08:53,410 e só se preocupan en un eixe e todo iso tipo de cousas. 154 00:08:53,410 --> 00:08:55,720 >> Como imos solucionar isto? 155 00:08:55,720 --> 00:09:01,200 Para cavar esta API un pouco máis eu vou lle amosar un outro exemplo desta plataforma 156 00:09:01,200 --> 00:09:04,490 , Que utiliza un conxunto lixeiramente diferente de datos. 157 00:09:04,490 --> 00:09:09,950 Este conxunto de datos, en vez de nomes de bebés, é realmente só o todo 158 00:09:09,950 --> 00:09:12,460 imprimir datos de publicación da Open Library, 159 00:09:12,460 --> 00:09:18,410 que é unha fonte xigante de textos publicados ao longo dos últimos 100 anos ou máis. 160 00:09:18,410 --> 00:09:23,540 A idea é que temos ese compository de millóns e millóns de texto, 161 00:09:23,540 --> 00:09:27,420 que agora podemos buscar palabras e frases diferentes Pol 162 00:09:27,420 --> 00:09:30,840 Aquí está un exemplo que varía un pouco diferente do exemplo anterior 163 00:09:30,840 --> 00:09:33,350 Mostre-lle, que é o que temos esas tres consultas de investigación, 164 00:09:33,350 --> 00:09:36,290 guerra, guerra, ea palabra francesa para a guerra, que é Guerre. 165 00:09:36,290 --> 00:09:40,380 E nós estamos buscando dentro de tres diferentes seccións da base de datos total. 166 00:09:40,380 --> 00:09:45,080 Noutras palabras, nesta primeira consulta que estamos só á procura nos Estados Unidos, 167 00:09:45,080 --> 00:09:51,150 na segunda só no Reino Unido, eo terceiro só de obras publicadas en Francia. 168 00:09:51,150 --> 00:09:53,120 Vemos algúns patróns interesantes emerxen. 169 00:09:53,120 --> 00:09:58,180 Por exemplo, podemos ver dereito por aquí, que- 170 00:09:58,180 --> 00:10:02,410 Oops, eu errei o eixe un pouco, pero podes ver dereito nesa franxa aquí 171 00:10:02,410 --> 00:10:05,730 en torno á Guerra Civil, hai un aumento moi grande na edición americana 172 00:10:05,730 --> 00:10:08,340 pero non como un gran aumento nos outros dous, e iso é, obviamente, porque 173 00:10:08,340 --> 00:10:10,880 a Guerra Civil Americana estaba acontecendo naquel momento. 174 00:10:10,880 --> 00:10:13,890 >> Podemos ver algunhas cousas legais alí, 175 00:10:13,890 --> 00:10:17,070 pero o que realmente importa é como conseguimos estes datos. 176 00:10:17,070 --> 00:10:21,320 Vou leva-lo detrás das escenas neste programa un pouco. 177 00:10:21,320 --> 00:10:24,540 Un truco é se está a traballar co lugar e tipo de querer saber 178 00:10:24,540 --> 00:10:27,430 o que está a suceder nos bastidores, pode abrir as ferramentas de desenvolvedor. 179 00:10:27,430 --> 00:10:30,200 Eu vou estar usando ferramentas de desenvolvedor de Chrome, e para chegar aos 180 00:10:30,200 --> 00:10:35,160 pode facer cambio de control, J, e que leva para a consola JavaScript. 181 00:10:35,160 --> 00:10:37,420 Hai algunhas abas aquí. 182 00:10:37,420 --> 00:10:39,680 Eles poden ser moi útiles en circunstancias diferentes, pero eu me importa a rede 183 00:10:39,680 --> 00:10:44,150 guía, agora, e eu realmente teño que actualizar para obter ese traballo. 184 00:10:44,150 --> 00:10:50,180 Oh, desculpe. 185 00:10:50,180 --> 00:10:52,320 Ela gusta de dar un exemplo ao chou. 186 00:10:52,320 --> 00:10:54,700 Ok, imos usar este exemplo en vez continuación. 187 00:10:54,700 --> 00:11:01,330 >> A idea é que hai esta API aquí, 188 00:11:01,330 --> 00:11:05,330 e podes ver exactamente o que a API está retornando. 189 00:11:05,330 --> 00:11:10,220 Isto é o que a aplicación está recibindo de volta a partir da API enviar esta proposta. 190 00:11:10,220 --> 00:11:13,680 Deixe-me ampliar un pouco, 191 00:11:13,680 --> 00:11:18,340 e podemos ver, basicamente, é só unha serie de pares de valores clave en JSON. 192 00:11:18,340 --> 00:11:23,220 Noutras palabras, temos este hashmap aquí que o mapeamento de valores. 193 00:11:23,220 --> 00:11:26,440 Noutras palabras, é o mapeamento anos para valores. 194 00:11:26,440 --> 00:11:32,600 En 1765 calquera palabra que inicialmente buscado é usado 90 veces 195 00:11:32,600 --> 00:11:35,810 de 1 millón, polo que estamos recibindo de volta a este resultado. 196 00:11:35,810 --> 00:11:40,280 Non é exactamente JSON unha vez que temos este cabeceira resultado pouco aquí, 197 00:11:40,280 --> 00:11:45,630 pero aviso que este obxecto enteiro aquí é só un gran gran blob JSON. 198 00:11:45,630 --> 00:11:51,070 Temos unha matriz aquí, que contén ese elemento todo, 199 00:11:51,070 --> 00:11:55,590 e podes ver que todo elemento remata aí, e despois temos outro gran elemento 200 00:11:55,590 --> 00:11:59,430 que vai todo o camiño ata o final, e que remata aquí. 201 00:11:59,430 --> 00:12:02,200 Temos un conxunto moi grande con dous obxectos na mesma, 202 00:12:02,200 --> 00:12:04,630 e cada un destes obxectos é un HashMap. 203 00:12:04,630 --> 00:12:07,340 Podes ver en cada unha desas HashMaps temos un mapeamento 204 00:12:07,340 --> 00:12:12,700 deste valor do índice para o valor 0 e ese valor para outro hashmap, 205 00:12:12,700 --> 00:12:18,360 que de novo é o mapeamento de valores do eixo X para os valores do eixo Y. 206 00:12:18,360 --> 00:12:20,970 >> Podes ver JSON queda un pouco complicado, pero en xeral, 207 00:12:20,970 --> 00:12:24,190 é realmente moi útil, e é moi fácil de acceder en comparación con 208 00:12:24,190 --> 00:12:27,390 outras formas de notación. 209 00:12:27,390 --> 00:12:30,550 Tanto como o que en realidade estamos enviando datos para a API para obter, 210 00:12:30,550 --> 00:12:34,690 Eu estou indo a ir a extrema traseira un pouco aquí. 211 00:12:34,690 --> 00:12:39,850 Este é o arquivo JavaScript grande que está lidando con todas as interaccións da aplicación web, 212 00:12:39,850 --> 00:12:44,810 e por iso non me importa a maior parte deste, pero se preocupan algúns deles. 213 00:12:44,810 --> 00:12:47,410 Por exemplo, nos preocupa con esta función BuildQuery, 214 00:12:47,410 --> 00:12:50,670 ea idea de que esta función é, basicamente, está mirando ao redor da páxina, 215 00:12:50,670 --> 00:12:53,750 descubrir o que o usuario quere consultar, noutras palabras, 216 00:12:53,750 --> 00:12:57,090 comprobar as caixas de entrada onde os seus termos de procura, 217 00:12:57,090 --> 00:13:01,380 comprobación da Y diferente e os valores do eixo X que escolleu e de todos os que tipo de cousas, 218 00:13:01,380 --> 00:13:06,650 e vai cuspir este valor da consulta, que pode, entón, enviar o API. 219 00:13:06,650 --> 00:13:09,180 >> Isto parece complicado, e é moi complicado 220 00:13:09,180 --> 00:13:18,090 pero o que eu vou facer-en realidade, eu xa estou facendo iso, o que é óptimo, 221 00:13:18,090 --> 00:13:21,640 é que eu estou indo a obter a consola para imprimir exactamente que valor da consulta 222 00:13:21,640 --> 00:13:28,110 que está enviando fóra para o API. 223 00:13:28,110 --> 00:13:30,870 Isto é realmente ben aquí. Sentímolo, xera unha morea de cousas. 224 00:13:30,870 --> 00:13:33,690 Pero iso é o que importa, ese obxecto aquí. 225 00:13:33,690 --> 00:13:35,300 Este é o obxecto da consulta. 226 00:13:35,300 --> 00:13:40,670 Noutras palabras, é exactamente iso que a aplicación web está enviando para a API, 227 00:13:40,670 --> 00:13:45,730 e entón imos ollar para dentro dun pouco, e vemos que temos algúns valores aquí. 228 00:13:45,730 --> 00:13:48,710 Vemos que temos este tipo de conta, que é coincidencias por millón de palabras, 229 00:13:48,710 --> 00:13:51,460 que é o que nós escoller no eixe Y aquí. 230 00:13:51,460 --> 00:13:53,740 É onde que vén. 231 00:13:53,740 --> 00:13:58,010 Temos unha base de datos de valor, o que significa que hai algún determinado base de datos 232 00:13:58,010 --> 00:14:01,610 que estes datos son vivindo, e queremos acceder a estes datos especialmente 233 00:14:01,610 --> 00:14:04,950 ao contrario de nomes do bebé de datos, por exemplo. 234 00:14:04,950 --> 00:14:08,320 Entón, temos este valor grupos, 235 00:14:08,320 --> 00:14:12,090 que está dicindo que quere buscar por ano en vez de 236 00:14:12,090 --> 00:14:16,030 calquera outro eixe X valor. 237 00:14:16,030 --> 00:14:19,040 Entón, temos un método, que algunhas APIs vai facer moitas cousas. 238 00:14:19,040 --> 00:14:22,360 Noutras palabras, esta API tamén pode retornar outros tipos de datos, 239 00:14:22,360 --> 00:14:27,740 pero, neste caso, queremos que o mapeamento dos valores do eixo X para valores do eixo Y. 240 00:14:27,740 --> 00:14:30,730 Isto é o que está dicindo a el para facer alí, 241 00:14:30,730 --> 00:14:35,020 e nós temos esta busca límites matriz que contén dous valores. 242 00:14:35,020 --> 00:14:40,720 O primeiro é o que vemos aquí, o que é de todos os valores 243 00:14:40,720 --> 00:14:43,020 contido dentro desa primeira caixa pequena na parte superior. 244 00:14:43,020 --> 00:14:47,570 >> Noutras palabras, nós queremos mirar para a batalla palabra, e queremos filtrar 245 00:14:47,570 --> 00:14:51,920 por textos en inglés dentro da literatura norteamericana. 246 00:14:51,920 --> 00:14:54,590 Temos este país, que é EUA. 247 00:14:54,590 --> 00:14:59,130 Temos unha linguaxe, que é o inglés, polo que temos todas esas pezas diferentes 248 00:14:59,130 --> 00:15:02,690 que están todos dicindo a API exactamente o que queremos. 249 00:15:02,690 --> 00:15:04,940 Nós non sabemos o que os datos que recibimos de volta e aínda, 250 00:15:04,940 --> 00:15:10,970 pero sabemos que os datos vai ter unha certa forma. 251 00:15:10,970 --> 00:15:13,650 Este exemplo é unha especie de no lado complicado, 252 00:15:13,650 --> 00:15:16,180 e non sería necesariamente usar unha API deste complexo, 253 00:15:16,180 --> 00:15:20,600 pero iso é para amosar-lle o alcance e poder do que APIs pode facer. 254 00:15:20,600 --> 00:15:24,980 Noutras palabras, usando un sistema de consulta relativamente simple, temos basicamente unha caixa de entrada 255 00:15:24,980 --> 00:15:29,490 cun seletores de algúns outros en diferentes lugares. 256 00:15:29,490 --> 00:15:32,010 >> Deixe-me o zoom aquí. 257 00:15:32,010 --> 00:15:37,720 Temos unha caixa de entrada con algunhas seleccións de metadatos diferentes, 258 00:15:37,720 --> 00:15:40,610 e temos eixe Y e seleccións eixe x. 259 00:15:40,610 --> 00:15:42,830 Nós realmente non teñen campos que moitos, 260 00:15:42,830 --> 00:15:46,210 e podemos ver moi facilmente somos capaces de ver algún tipo de API 261 00:15:46,210 --> 00:15:48,510 e obter datos de volta e, a continuación, colocar-lo en este gráfico, 262 00:15:48,510 --> 00:15:52,080 que é, entón, vai amosar-lo nunha forma útil. 263 00:15:52,080 --> 00:15:54,970 Mirar para outro exemplo que pode ser un pouco máis familiar para vostedes 264 00:15:54,970 --> 00:15:56,510 imos volver para o Facebook. 265 00:15:56,510 --> 00:15:59,440 API de Facebook chámase Gráfico Facebook 266 00:15:59,440 --> 00:16:04,390 e, basicamente, o que significa que é o Facebook se ve como esta enorme base de datos 267 00:16:04,390 --> 00:16:08,000 de lotes de pezas diferentes que teñen certas relacións entre si. 268 00:16:08,000 --> 00:16:11,070 Noutras palabras, eu son un usuario de Facebook, entón eu teño un perfil, 269 00:16:11,070 --> 00:16:14,310 e I tamén teñen certos amigos, e cada un deles ten un perfil, 270 00:16:14,310 --> 00:16:17,580 e cada un dos meus amigos ten unha parede, que ten diferentes comentarios sobre el, 271 00:16:17,580 --> 00:16:20,800 e cada un destes comentarios ten gustos e de todos os que tipo de cousas. 272 00:16:20,800 --> 00:16:23,100 >> Hai lotes de diferentes partes ao Facebook. 273 00:16:23,100 --> 00:16:26,670 É unha API moi complexo, e hai toneladas que podes facer con el, 274 00:16:26,670 --> 00:16:28,450 pero a verdade é moi sinxelo de usar. 275 00:16:28,450 --> 00:16:33,680 Vou comezar por ir a graph.facebook.com / billyjanitsch, 276 00:16:33,680 --> 00:16:38,430 que é o meu nome de conta única, eo seu nome de conta ou será 277 00:16:38,430 --> 00:16:43,710 algún tipo de palabra, se escolleu, ou que podería ser só unha secuencia de números. 278 00:16:43,710 --> 00:16:46,360 O que temos de volta é unha información moi básica. 279 00:16:46,360 --> 00:16:50,460 Vemos que eu teño un nome, que é Billy, un apelido, que é Janitsch. 280 00:16:50,460 --> 00:16:53,370 Hai un Facebook ID único que eu teño. 281 00:16:53,370 --> 00:16:57,920 Podes ver que eu son macho e que eu teño a miña configuración de idioma 282 00:16:57,920 --> 00:17:01,290 Inglés Británico. 283 00:17:01,290 --> 00:17:03,490 Noutras palabras, nós estamos vendo información moi básica aquí. 284 00:17:03,490 --> 00:17:08,670 Non é moito, pero dános unha idea do que está aí. 285 00:17:08,670 --> 00:17:10,849 >> Podemos facer a mesma cousa con David Malan, por exemplo. 286 00:17:10,849 --> 00:17:13,599 Eu creo que o seu nome é dmalan. 287 00:17:13,599 --> 00:17:16,369 Vemos David Malan ten unha identificación única. 288 00:17:16,369 --> 00:17:19,300 El ten un nome, nome, nome do medio, apelidos. 289 00:17:19,300 --> 00:17:24,210 Vemos tamén que é de sexo masculino e ten o seu conxunto de linguaxe para Inglés de Estados Unidos. 290 00:17:24,210 --> 00:17:26,869 Noutras palabras, nós estamos vendo informacións bastante básico aquí. 291 00:17:26,869 --> 00:17:28,860 Agora, o que pasa se tentar comprobar algunha outra cousa? 292 00:17:28,860 --> 00:17:33,060 Imos dicir que eu estou interesado no que David Malan ten gusto en Facebook. 293 00:17:33,060 --> 00:17:36,860 Eu podo facer / gustos. Agora imos correr nun problema. 294 00:17:36,860 --> 00:17:39,280 Temos algún tipo de erro que di que un token de acceso 295 00:17:39,280 --> 00:17:41,660 está obrigado a solicitar este recurso. 296 00:17:41,660 --> 00:17:44,730 Pero se pensar sobre iso, que realmente ten sentido, porque sería estraño 297 00:17:44,730 --> 00:17:47,830 se puidese acceder cada parte da base de datos de Facebook 298 00:17:47,830 --> 00:17:50,170 só a partir de calquera tipo de API simple, non? 299 00:17:50,170 --> 00:17:56,040 Noutras palabras, probablemente a información non poden acceder por calquera que queira. 300 00:17:56,040 --> 00:17:58,330 >> Este erro é o que iso significa. 301 00:17:58,330 --> 00:18:03,630 Algunhas APIs esixen certas permisos para acceder os seus datos. 302 00:18:03,630 --> 00:18:06,940 E APIs aínda máis avanzados, como Facebook un, 303 00:18:06,940 --> 00:18:09,840 esixirá determinadas permisos para facer certas cousas. 304 00:18:09,840 --> 00:18:12,650 Eu podo ver esta información básica sobre David Malan. 305 00:18:12,650 --> 00:18:15,950 Podo ver que é de sexo masculino e que vive en Estados Unidos, 306 00:18:15,950 --> 00:18:19,270 pero eu realmente non podo ver nada alén diso. 307 00:18:19,270 --> 00:18:23,050 Para evitar esta situación, polo de agora, Facebook ten esta ferramenta agradable 308 00:18:23,050 --> 00:18:27,690 Que é o gráfico API explorador, ea idea de que é o que pode clasificar de 309 00:18:27,690 --> 00:18:31,880 tornar-se permisos para baseado na súa propia conta 310 00:18:31,880 --> 00:18:35,680 e despois ver as cousas que especificamente a súa conta pode ver. 311 00:18:35,680 --> 00:18:45,120 Por exemplo, se eu fai graph.facebook.com/billyjanitsch/likes- 312 00:18:45,120 --> 00:18:53,510 Oops, eu creo que ten que revalidar o meu token aquí. 313 00:18:53,510 --> 00:18:55,950 Okay. 314 00:18:55,950 --> 00:19:01,740 Se eu fai iso de novo, gran, agora eu vexo que eu teño ese obxecto de volta 315 00:19:01,740 --> 00:19:06,300 que di que me gusta de pasta piscina, que son na categoría Xogos e Xoguetes. 316 00:19:06,300 --> 00:19:08,620 Eu gusto de morsas, que están na categoría animal. 317 00:19:08,620 --> 00:19:10,180 Estes son os meus gustos Facebook reais. 318 00:19:10,180 --> 00:19:13,280 Son medio constrangedor. 319 00:19:13,280 --> 00:19:16,090 >> Pero podemos ver estes datos son todos volveron en JSON. 320 00:19:16,090 --> 00:19:18,160 É moi lexible. 321 00:19:18,160 --> 00:19:20,970 Noutras palabras, temos ese mapeamento de datos para algún tipo de matriz, 322 00:19:20,970 --> 00:19:25,220 e cada elemento desta matriz é un HashMap que mapea 323 00:19:25,220 --> 00:19:28,530 o nome dunha como a categoría e dun gusto. 324 00:19:28,530 --> 00:19:31,240 Cada un como ten unha identificación única. 325 00:19:31,240 --> 00:19:34,510 Hai todo tipo de cousas distintas de datos que podemos obter, 326 00:19:34,510 --> 00:19:37,980 e se vostede está interesado en usar a API de Facebook para un proxecto final, CS50 327 00:19:37,980 --> 00:19:40,720 ou para calquera cousa como que en realidade é bastante factible. 328 00:19:40,720 --> 00:19:44,260 Basicamente como dar a volta á cousa de autenticación é Facebook 329 00:19:44,260 --> 00:19:48,030 usa un sistema chamado OAuth ou Open authentication, 330 00:19:48,030 --> 00:19:52,870 e eu non quero entrar agora porque OAuth ou o tipo 331 00:19:52,870 --> 00:19:56,060 de autenticación tende a variar moito entre distintas APIs, 332 00:19:56,060 --> 00:19:58,320 para que eu puidese pasar un longo tempo pasando por riba de cada un, 333 00:19:58,320 --> 00:20:01,170 pero son realmente moi auto-explicativo. 334 00:20:01,170 --> 00:20:04,050 >> Se Google Facebook API é moi lexible. 335 00:20:04,050 --> 00:20:06,670 Hai unha especificación todo. 336 00:20:06,670 --> 00:20:10,210 Por exemplo, esta é a documentación para a API de Facebook, 337 00:20:10,210 --> 00:20:14,170 e podes ver que eu estou na páxina do usuario, para que eu poida aprender todo sobre os distintos tipos de cousas 338 00:20:14,170 --> 00:20:17,170 que están dispoñibles para obter os datos, na medida do 339 00:20:17,170 --> 00:20:21,550 e tamén os permisos diferentes que eu teño, a fin de acceder a eles. 340 00:20:21,550 --> 00:20:25,470 Como vimos, non precisamos de permisos para acceder o nome ou o sexo, 341 00:20:25,470 --> 00:20:29,380 pero ademais necesitamos permisos para a maioría das cousas. 342 00:20:29,380 --> 00:20:33,040 Esta páxina, ou mellor, este sitio tamén pode dicirlle como chegar 343 00:20:33,040 --> 00:20:35,640 un token para ser capaz de acceder ao sistema. 344 00:20:35,640 --> 00:20:39,290 A maioría dos sistemas de autenticación usar algún tipo de Token 345 00:20:39,290 --> 00:20:42,880 onde recibe ese valor único, que é unha cadea moi longa e aleatoria, 346 00:20:42,880 --> 00:20:46,240 e de que xeito poden asociar a petición que está facendo con vostede. 347 00:20:46,240 --> 00:20:50,560 Noutras palabras, eles saben que non está facendo nada de sospeitoso cos seus datos. 348 00:20:50,560 --> 00:20:53,340 Eles saben exactamente o que está a recibir. 349 00:20:53,340 --> 00:20:56,180 Eles saben que ten permiso para ver a información. 350 00:20:56,180 --> 00:20:59,110 >> Se fixo unha aplicación de Facebook eo seu programa ten certos usuarios, 351 00:20:59,110 --> 00:21:03,380 e os usuarios teñen permitido que o app para acceder certas partes do seu perfil, 352 00:21:03,380 --> 00:21:07,790 entón calquera clave de API ou token que ese programa está a usar 353 00:21:07,790 --> 00:21:11,090 será capaz de acceder aos datos para eses usuarios. 354 00:21:11,090 --> 00:21:13,780 Isto pode parecer complicado, pero non é tan malo, 355 00:21:13,780 --> 00:21:16,810 e se quere usar o Facebook Eu recomendo que 356 00:21:16,810 --> 00:21:18,990 considerar a xogar coa súa API. 357 00:21:18,990 --> 00:21:21,610 É moi legal, e pode facer unha chea de cousas distintas con el. 358 00:21:21,610 --> 00:21:24,880 Se o usuario concede os permisos que pode incluso volver para a API 359 00:21:24,880 --> 00:21:28,820 e dicir que quero, en realidade, poñer a parede do usuario, ou quero telos publicar unha foto, 360 00:21:28,820 --> 00:21:32,390 e é por iso que no seu comentario de noticias comeza ás veces esas cousas irritantes 361 00:21:32,390 --> 00:21:37,840 dicindo que o seu amigo teña visto este vídeo en algún tipo de sitio estraño ou algo parecido. 362 00:21:37,840 --> 00:21:43,120 Isto porque ese app foi concedido acceso para publicar no mural da persoa. 363 00:21:43,120 --> 00:21:48,350 A idea xeral, a API de Facebook é moi complicado, pero tamén moi útil. 364 00:21:48,350 --> 00:21:53,220 Paga a pena probar se aínda está a buscar un proxecto final. 365 00:21:53,220 --> 00:21:57,930 >> Outro conxunto de APIs que eu vou pasar por riba de APIs e CS50. 366 00:21:57,930 --> 00:22:00,070 Deixe-me achegar aquí. 367 00:22:00,070 --> 00:22:03,390 CS50 ten realmente xuntar unha serie de APIs 368 00:22:03,390 --> 00:22:07,080 que pode usar para un proxecto final ou só para calquera cousa que está facendo. 369 00:22:07,080 --> 00:22:12,830 E eles están principalmente relacionados Harvard, e varían dende o menú HUDS, 370 00:22:12,830 --> 00:22:17,780 por exemplo, para este Harvard Eventos API, o que lle permitirá acceder a unha lista de 371 00:22:17,780 --> 00:22:21,290 distintos eventos que están a ocorrer en Harvard e ese tipo de cousas. 372 00:22:21,290 --> 00:22:24,510 E, así, pode premer en calquera deles e ter unha especificación para el, 373 00:22:24,510 --> 00:22:28,090 que vai ser capaz de atopar a calquera API, ea idea é 374 00:22:28,090 --> 00:22:33,920 el permite que vostede sabe, A, concretamente o de solicitar a API e como solicitalo-la. 375 00:22:33,920 --> 00:22:37,370 Noutras palabras, se eu queira que todos os eventos que están a ocorrer mañá 376 00:22:37,370 --> 00:22:42,550 entón eu teño que, obviamente, darlle esa data que quero nun determinado formato, 377 00:22:42,550 --> 00:22:46,030 e B, el me vai dicir exactamente o que vai dar de volta para min. 378 00:22:46,030 --> 00:22:48,590 El vai dicir que eu estou indo a volver este obxecto JSON, 379 00:22:48,590 --> 00:22:50,960 ou como se pode ver, hai diferentes formatos. 380 00:22:50,960 --> 00:22:54,050 >> Tamén pode voltar os datos como CSV, por exemplo. 381 00:22:54,050 --> 00:22:57,620 Pero vostede sabe exactamente como os datos vai mirar cando recibe de volta 382 00:22:57,620 --> 00:23:00,610 entón pode esperar para facer certas cousas con el. 383 00:23:00,610 --> 00:23:07,240 Nós pode rolar para abaixo e ver, por exemplo, se queremos consultar a API 384 00:23:07,240 --> 00:23:11,500 para obter un calendario, entón podemos utilizar este URL especial 385 00:23:11,500 --> 00:23:16,480 e darlle certos parámetros que van ser os datos que queremos exactamente. 386 00:23:16,480 --> 00:23:19,540 E do mesmo xeito, se queremos que os datos de volta en un formato, 387 00:23:19,540 --> 00:23:23,790 entón podemos pedir-lle para transmitir os datos nun ficheiro CSV, 388 00:23:23,790 --> 00:23:27,700 e iso é só outro parámetro que estamos pasando a API. 389 00:23:27,700 --> 00:23:29,210 Moitas cousas legais para facer alí. 390 00:23:29,210 --> 00:23:32,550 Eu sempre recomenda comprobar as APIs CS50. 391 00:23:32,550 --> 00:23:36,000 >> Vou mirar para esta API Alimentos Harvard, en especial para un pouco. 392 00:23:36,000 --> 00:23:39,870 Unha cousa que eu realmente deseñado e este Harvard web Noms, 393 00:23:39,870 --> 00:23:44,930 que utiliza a API Food CS50 para recuperar o menú HUDS para o día. 394 00:23:44,930 --> 00:23:50,400 E para a xente da escola de extensión, HUDS é o servizo de xantar en Harvard. 395 00:23:50,400 --> 00:23:55,130 O que recibe é esta páxina que contén todas as comidas do día, polo que vemos o xantar. 396 00:23:55,130 --> 00:23:58,130 Temos algunhas categorías diferentes. Temos o feixón e da estación de grans enteiros. 397 00:23:58,130 --> 00:24:00,340 Temos a estación de arroz integral. 398 00:24:00,340 --> 00:24:03,360 Podemos ver a brunch temos estes alimentos poucos. 399 00:24:03,360 --> 00:24:07,030 Se premer sobre eles, entón temos a información nutricional. 400 00:24:07,030 --> 00:24:12,240 Vostede ve esta é a información nutricional para grapefruit, se estea preguntando. 401 00:24:12,240 --> 00:24:14,870 E de novo, imos para perscrutar o extremo traseira un pouco aquí 402 00:24:14,870 --> 00:24:18,530 para ver exactamente o que iso está facendo para obter estes datos. 403 00:24:18,530 --> 00:24:21,710 E iso acaba por non ser realmente moi complexo en todo. 404 00:24:21,710 --> 00:24:28,720 Este ficheiro parece un pouco confuso, pero teña en conta que está a manexar o sitio enteiro, 405 00:24:28,720 --> 00:24:34,130 e se eu rolar para abaixo vemos este cambio función de datos. 406 00:24:34,130 --> 00:24:36,630 >> Agora, só para quedar claro, iso está escrito no CoffeeScript, 407 00:24:36,630 --> 00:24:39,570 que é unha linguaxe que probablemente non teña visto antes. 408 00:24:39,570 --> 00:24:44,810 Pero é moi lexible, entón eu vou pasar por ela como se fose pseudocódigo. 409 00:24:44,810 --> 00:24:49,080 Cambiar data é unha función que vai levar este valor, data 410 00:24:49,080 --> 00:24:51,740 e tamén vai levar un primeiro, que non se preocupan o máximo. 411 00:24:51,740 --> 00:24:54,110 Pero o importante é que ten esta data, 412 00:24:54,110 --> 00:25:00,080 e esa data é o día que queremos pedir a todos os elementos alimenticios para. 413 00:25:00,080 --> 00:25:04,030 E entón ve que temos un pouco de sintaxe aquí, 414 00:25:04,030 --> 00:25:09,000 que é basicamente analizar esa data nun formato lexible. 415 00:25:09,000 --> 00:25:11,920 Noutras palabras, o API esixe a data nun formato determinado. 416 00:25:11,920 --> 00:25:17,390 Vostede non pode simplemente dicir 16 de novembro de 2012 AD. 417 00:25:17,390 --> 00:25:20,320 El non vai saber o que facer con iso. El quere a data nun formato específico. 418 00:25:20,320 --> 00:25:23,230 Todo o que estamos facendo aquí é dar-lle exactamente o formato que, 419 00:25:23,230 --> 00:25:26,520 que é un valor de ano e, a continuación, un guión, un valor de mes, 420 00:25:26,520 --> 00:25:29,420 outro trazo eo valor de data. 421 00:25:29,420 --> 00:25:34,910 E tamén dicir que queremos os datos para saída en JSON. 422 00:25:34,910 --> 00:25:37,560 >> Agora estamos facendo esta petición AJAX, e como xa refire anteriormente, 423 00:25:37,560 --> 00:25:41,680 jQuery ten esta super función AJAX útil, que todo o que cómpre facer é especificar 424 00:25:41,680 --> 00:25:45,780 algúns parámetros para abaixo aquí, e lle vai dar de volta exactamente o que quere. 425 00:25:45,780 --> 00:25:50,490 Estamos dicindo é que a URL que queremos ir é esta API Alimentos CS50, 426 00:25:50,490 --> 00:25:52,270 que temos a partir da especificación. 427 00:25:52,270 --> 00:25:56,730 Nós dicimos que queremos que os datos JSON e que 428 00:25:56,730 --> 00:25:59,490 imos dar-lle estes datos que temos aquí definidos. 429 00:25:59,490 --> 00:26:02,670 Este é o día en que quere que os elementos alimenticios para. 430 00:26:02,670 --> 00:26:07,790 E entón todo o que temos que facer é definir algún tipo de función de éxito, 431 00:26:07,790 --> 00:26:11,980 que é basicamente o que acontece cando a API retorna os datos. 432 00:26:11,980 --> 00:26:15,490 Noutras palabras, nós embalados todos os parámetros que queremos, 433 00:26:15,490 --> 00:26:20,530 que neste caso é o día que queremos que el eo feito de que queremos en JSON, 434 00:26:20,530 --> 00:26:23,840 e enviou-o para a API, agora API está dicindo, todo ben, 435 00:26:23,840 --> 00:26:26,350 aquí está os seus datos, eu peguei de volta para ti. 436 00:26:26,350 --> 00:26:29,930 Temos a función de éxito, o que significa que unha vez que a API 437 00:26:29,930 --> 00:26:32,230 con éxito retorna algúns datos, o que imos facer con el? 438 00:26:32,230 --> 00:26:35,980 >> E verifícase que todo o que facemos é chamar esta función menú de actualización 439 00:26:35,980 --> 00:26:42,680 co que a API está de volta, para que poidamos procurar que 440 00:26:42,680 --> 00:26:47,970 e ver que todo o que estamos facendo é usar unha morea de nova sintaxe aquí 441 00:26:47,970 --> 00:26:52,220 para actualizar o HTML e inserir eses datos novos. 442 00:26:52,220 --> 00:26:56,580 O que permite é que temos esas frechas de cada lado, e podemos premer, 443 00:26:56,580 --> 00:27:01,060 e agora estamos mirando para os datos para o día seguinte e de novo ao día seguinte, 444 00:27:01,060 --> 00:27:04,820 e cada vez que actualizar ese valor de data e consultando a API, 445 00:27:04,820 --> 00:27:07,510 volver algúns datos e colocar-lo no sitio. 446 00:27:07,510 --> 00:27:10,590 Unha vez máis, verás, super, super útil. 447 00:27:10,590 --> 00:27:14,410 Esta aplicación levoume unhas horas para cortar xuntos, 448 00:27:14,410 --> 00:27:20,140 e eu teño un pouco máis de experiencia, obviamente, pero o seu proxecto final, CS50 449 00:27:20,140 --> 00:27:22,870 pode ser algo moi parecido con iso. 450 00:27:22,870 --> 00:27:29,540 >> APIs son super potente para a cantidade de esforzo que toman. 451 00:27:29,540 --> 00:27:32,800 A última cousa que eu vou pasar por riba de algunhas APIs é máis ampla. 452 00:27:32,800 --> 00:27:35,480 Eu non vou chegar tan lonxe para eles, tanto como o que fan especificamente, 453 00:27:35,480 --> 00:27:38,740 pero vou lle dar unha idea do que está aí fóra. 454 00:27:38,740 --> 00:27:42,700 2 Os realmente útiles, se vostede está interesado na análise de datos ou visualización 455 00:27:42,700 --> 00:27:45,960 ou algo así, son Freebase e Wikipedia. 456 00:27:45,960 --> 00:27:49,800 Wikipedia-presuntamente todos saben, é unha enciclopédia libre en liña, 457 00:27:49,800 --> 00:27:53,230 e realmente ten unha API, por iso, se quere, por exemplo, 458 00:27:53,230 --> 00:27:56,250 obter todos os textos e os artigos para polbo 459 00:27:56,250 --> 00:27:58,030 pode facilmente facelo. 460 00:27:58,030 --> 00:28:02,300 Basta dicir hey, Wikipedia API, gustaríame que os datos obtidos coma este, 461 00:28:02,300 --> 00:28:07,010 e me gustaría que neste formato, eo artigo que me gustaría é polbo, 462 00:28:07,010 --> 00:28:09,820 e moi rapidamente el lle vai dar de volta esa información. 463 00:28:09,820 --> 00:28:12,230 Isto pode ser moi útil se quere facer algún tipo de sitio web 464 00:28:12,230 --> 00:28:16,200 iso é unha mellor visualización para a Wikipedia ou algo así. 465 00:28:16,200 --> 00:28:21,350 >> Freebase é unha especie de similar, aínda que sexa un pouco máis difícil, tanto como API. 466 00:28:21,350 --> 00:28:24,390 Freebase é como a Wikipedia, que é unha enciclopedia en liña 467 00:28:24,390 --> 00:28:29,050 que contén moitos e moitos datos diferentes sobre todo tipo de temas diferentes, 468 00:28:29,050 --> 00:28:33,150 pero é almacenado nunha base de datos relacional, que é un pouco diferente da Wikipedia. 469 00:28:33,150 --> 00:28:36,410 Wikipedia ten os seus artigos e artigos ligados a outros artigos, 470 00:28:36,410 --> 00:28:38,860 pero a maior parte, se quere os datos para o polbo, 471 00:28:38,860 --> 00:28:41,990 vai para o artigo polbo, obter os datos, e ten unha morea de texto 472 00:28:41,990 --> 00:28:43,830 sobre os polbos, o que é óptimo. 473 00:28:43,830 --> 00:28:46,870 Freebase funciona dun xeito un pouco máis complicada en que 474 00:28:46,870 --> 00:28:48,930 todo está relacionado con outro. 475 00:28:48,930 --> 00:28:52,620 Noutras palabras, se estamos á procura de polbo 476 00:28:52,620 --> 00:28:54,940 el ten unha morea de categorías de asociados. 477 00:28:54,940 --> 00:28:57,920 >> Por exemplo, é un animal que vive debaixo da auga, 478 00:28:57,920 --> 00:28:59,710 ela ten unha temperatura corporal determinado. 479 00:28:59,710 --> 00:29:01,210 Eu non sei. 480 00:29:01,210 --> 00:29:04,230 E todas esas categorías son enlaces a outros lugares onde pode ir 481 00:29:04,230 --> 00:29:06,640 a ver as cousas con mesma categoría. 482 00:29:06,640 --> 00:29:13,450 Noutras palabras, o polbo conxunto de datos que contén un enlace para o conxunto de datos para todos os animais, 483 00:29:13,450 --> 00:29:16,790 e que me deixou pasar na base de datos moi rapidamente. 484 00:29:16,790 --> 00:29:21,740 Isto pode ser moi útil se está facendo algo así como comparacións. 485 00:29:21,740 --> 00:29:24,490 Noutras palabras, dada unha certa cousa, que quere ver 486 00:29:24,490 --> 00:29:27,890 o que máis está relacionado e ver o que máis non está relacionado. 487 00:29:27,890 --> 00:29:30,700 Ese tipo de cousas. Pode ser útil nun número de formas. 488 00:29:30,700 --> 00:29:34,250 Se está buscando por máis de un reto e ser capaz de facer algunhas cousas máis complexas 489 00:29:34,250 --> 00:29:38,740 Eu consideraría un ollo na API Freebase. 490 00:29:38,740 --> 00:29:44,670 Pero en gran parte, a Wikipedia é un lugar moi simple para ir tan lonxe como a obtención de información. 491 00:29:44,670 --> 00:29:48,340 Outro lugar que eu vou mirar é o Last.fm, e eu estou indo realmente para ir ao sitio 492 00:29:48,340 --> 00:29:53,800 no caso de que algunhas persoas non están familiarizados, pero Last.fm é basicamente unha música 493 00:29:53,800 --> 00:29:57,220 gustos e web recomendacións. 494 00:29:57,220 --> 00:29:59,000 Podes facer unha conta. 495 00:29:59,000 --> 00:30:04,250 Pode comezar a cargar música do seu reprodutor de música 496 00:30:04,250 --> 00:30:08,020 para o sitio, e, basicamente, que vai comezar a darlle recomendacións de música 497 00:30:08,020 --> 00:30:10,030 con base no que se escoita. 498 00:30:10,030 --> 00:30:14,270 >> Por exemplo, se vai para o seu perfil de páxina é de minas 499 00:30:14,270 --> 00:30:18,180 podes ver que ten unha lista de recentemente escoitou pistas. 500 00:30:18,180 --> 00:30:22,550 Podes ver xerais artistas favoritos, todos este tipo de cousas, 501 00:30:22,550 --> 00:30:25,280 e, de novo, hai unha API de gran detrás Last.fm, 502 00:30:25,280 --> 00:30:29,360  e pode usalo para facer moitas e moitas cousas legais. 503 00:30:29,360 --> 00:30:38,870 Por exemplo, eu vou á páxina de un amigo que ten esta web Last.fm ferramentas. 504 00:30:38,870 --> 00:30:42,380 Esta é realmente unha outra plataforma que está construído sobre a API de Last.fm, 505 00:30:42,380 --> 00:30:45,420 e fai unha serie de fermosas cousas interesantes. 506 00:30:45,420 --> 00:30:50,260 Se eu escribir o meu nome de usuario, por exemplo, 507 00:30:50,260 --> 00:30:53,110 Eu podo pedir para el xerar unha nube de etiquetas, por exemplo, 508 00:30:53,110 --> 00:30:56,480 eo que isto vai facer é me dar de volta unha imaxe de 509 00:30:56,480 --> 00:30:59,850 todos os distintos xéneros e este tipo de cousas que eu gusto de escoitar. 510 00:30:59,850 --> 00:31:01,410 Como é que está facendo isto? 511 00:31:01,410 --> 00:31:05,670 Moi basicamente está dicindo a API de Last.fm aquí está este usuario. 512 00:31:05,670 --> 00:31:10,710 Gustaríame saber o xénero de cada canción que xa escoitou, 513 00:31:10,710 --> 00:31:15,130 e pode facelo facendo unha ben simple chamada AJAX para a API de Last.fm. 514 00:31:15,130 --> 00:31:18,990 Vostede recibirá de volta unha gran lista e, entón, obviamente, algunhas outras cousas está a ser feito 515 00:31:18,990 --> 00:31:22,280 para transformalo en unha nube de palabras, pero podes ver xeral 516 00:31:22,280 --> 00:31:25,850 é moi fácil de acceder e moi doado de usar. 517 00:31:25,850 --> 00:31:30,750 Moi bo para unha serie de cousas. 518 00:31:30,750 --> 00:31:35,940 >> Eu creo que iso é todo o que eu vou dicir en xeral. 519 00:31:35,940 --> 00:31:39,040 Unha última cousa que eu vou falar sobre APIs en xeral é que 520 00:31:39,040 --> 00:31:41,840 vai, ás veces, en algo chamado límite de taxa, 521 00:31:41,840 --> 00:31:44,940 ea idea de limitación de velocidade é que non quere abusar APIs 522 00:31:44,940 --> 00:31:48,130 Noutras palabras, é moi bo que moitos destes sitios teñen APIs 523 00:31:48,130 --> 00:31:51,070 que pode ir e usar de balde. 524 00:31:51,070 --> 00:31:54,460 Con todo, se está facendo millóns ou billóns de solicitudes ao día, 525 00:31:54,460 --> 00:31:57,610 Por exemplo, se vostede está preso nun loop infinito que é infinitamente consultando 526 00:31:57,610 --> 00:32:00,680 algún tipo de API e recibindo de volta unha cantidade enorme de datos, 527 00:32:00,680 --> 00:32:04,570 obviamente que non é bo, entón o que unha morea de APIs facer é ter a taxa limitante 528 00:32:04,570 --> 00:32:09,970 que di que só se pode facer 1.000 solicitudes por día e por enderezo IP ou algo así. 529 00:32:09,970 --> 00:32:12,540 E se está facendo unha morea de probas e este tipo de cousas, 530 00:32:12,540 --> 00:32:14,890 ás veces executar para iso, e de súpeto el desactiva-lo fóra 531 00:32:14,890 --> 00:32:18,280 e dicir non, eu non vou che dar máis datos. 532 00:32:18,280 --> 00:32:20,000 >> O que quere facer é xogar polas regras. 533 00:32:20,000 --> 00:32:22,950 Quere estar seguro de que le a especificación API coidado. 534 00:32:22,950 --> 00:32:26,330 Se ten certas regras ligadas a el, como só se pode facer consultas X por día 535 00:32:26,330 --> 00:32:30,000 ou podes acceder só unha parte da base de datos dun determinado número de veces 536 00:32:30,000 --> 00:32:32,900 ou algo así que quere estar seguro de que ater a iso. 537 00:32:32,900 --> 00:32:38,360 Mentres xogar dentro desas regras que probablemente vai ter un tempo moi bo usando APIs 538 00:32:38,360 --> 00:32:42,030 O seu takeaway xeral é APIs son moi, moi útil. 539 00:32:42,030 --> 00:32:45,610 >> Hai unha API para case calquera servizo web grande alí fora. 540 00:32:45,610 --> 00:32:50,700 Practicamente calquera parte do ferramentas Google Suite, Google Maps, Google Earth, 541 00:32:50,700 --> 00:32:54,390 Gmail, Google Calendar, todas estas cousas teñen APIs 542 00:32:54,390 --> 00:32:58,280 Podes usalos cos datos de comezar dende o servidor e enviar datos ao servidor. 543 00:32:58,280 --> 00:33:00,870 Noutras palabras, se quere facer unha aplicación de calendario que pode actualizar 544 00:33:00,870 --> 00:33:04,190 Calendario de alguén de Google, hai unha API para iso. 545 00:33:04,190 --> 00:33:07,810 Se queres facer algo que vai che dicir onde 546 00:33:07,810 --> 00:33:12,530 a localización dun determinado enderezo é que pode usar a API de Google Maps para iso. 547 00:33:12,530 --> 00:33:15,860 APIs son fantástica útil, e eles están en todas partes. 548 00:33:15,860 --> 00:33:18,700 Se vostede está interesado en algún tipo de idea, 549 00:33:18,700 --> 00:33:22,170 probablemente hai unha API relacionado que pode usar para obter unha gran cantidade de datos 550 00:33:22,170 --> 00:33:25,060 moi rapidamente e de xeito moi sinxelo. 551 00:33:25,060 --> 00:33:28,140 >> Se aínda está a buscar un proxecto ou se só quere xogar 552 00:33:28,140 --> 00:33:31,820 con algo en xeral, APIs son sempre paga a pena facer. 553 00:33:31,820 --> 00:33:37,200 Grazas, e eu estou feliz en responder calquera pregunta que vostedes poidan ter. 554 00:33:37,200 --> 00:33:44,900 Ok, moitas grazas. 555 00:33:44,900 --> 00:33:48,000 [CS50.TV]