1 00:00:00,000 --> 00:00:02,480 [Powered by Google Translate] [Seminario] [Introducción de un programador a las 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 [Esta es CS50.] [CS50.TV] 4 00:00:08,220 --> 00:00:12,100 >> Hola a todos, soy Billy, y hoy voy a hablar de las API, 5 00:00:12,100 --> 00:00:15,220 o interfaces de programación de aplicaciones, 6 00:00:15,220 --> 00:00:20,040 específicamente en el contexto de los proyectos finales CS50 y ese tipo de cosas. 7 00:00:20,040 --> 00:00:22,490 En general lo que es un API? 8 00:00:22,490 --> 00:00:25,530 En términos muy generales, es una especie de intermediario que permite 2 piezas 9 00:00:25,530 --> 00:00:28,610 de software para comunicarse entre sí. 10 00:00:28,610 --> 00:00:32,530 Eso es una especie de definición muy amplia y no es tan relevante para lo que estamos viendo. 11 00:00:32,530 --> 00:00:35,450 Lo que realmente queremos es una especie de término medio útil 12 00:00:35,450 --> 00:00:40,570 para comunicarse con algún tipo de base de datos en algún lugar. 13 00:00:40,570 --> 00:00:43,310 >> Aquí está un gráfico, y, básicamente, es la idea de que 14 00:00:43,310 --> 00:00:46,790 Somos una aplicación, y queremos obtener datos de una base de datos, 15 00:00:46,790 --> 00:00:49,570 pero no queremos para consultar la base de datos directamente. 16 00:00:49,570 --> 00:00:52,710 En su lugar, quieren pasar por este tipo de intermediario, la API. 17 00:00:52,710 --> 00:00:55,440 La idea detrás de esto es los números 2 y 3 de la tabla 18 00:00:55,440 --> 00:00:57,750 son a la vez va a ser muy complicado y desordenado. 19 00:00:57,750 --> 00:00:59,960 En otras palabras, cuando la API se consulta la base de datos, 20 00:00:59,960 --> 00:01:03,300 probablemente va a estar usando tablas SQL y todo ese tipo de cosas, 21 00:01:03,300 --> 00:01:05,489 y hemos aprendido un poco sobre ello en CS50, pero en general, 22 00:01:05,489 --> 00:01:07,590 te has dado cuenta de que es un poco de dolor. 23 00:01:07,590 --> 00:01:10,590 Se pone muy, muy complicado y confuso, especialmente cuando usted está haciendo 24 00:01:10,590 --> 00:01:12,530 consultas complejas y ese tipo de cosas. 25 00:01:12,530 --> 00:01:15,960 >> Lo que realmente queremos es una especie de forma útil y sencilla 26 00:01:15,960 --> 00:01:19,780 para obtener esos datos, y esa es la idea detrás de los números 1 y 4 de la tabla. 27 00:01:19,780 --> 00:01:23,600 En otras palabras, queremos una manera muy sencilla de decirle a la API de qué conseguir para nosotros 28 00:01:23,600 --> 00:01:27,760 y una forma muy sencilla de obtener esos datos. 29 00:01:27,760 --> 00:01:33,020 Hay un camino principal que los datos que se envían y se reciben por lo general, 30 00:01:33,020 --> 00:01:36,490 que es JSON o JavaScript Object Notation. 31 00:01:36,490 --> 00:01:40,370 Eso puede variar un poco en cuanto a la forma de enviar la solicitud a la API. 32 00:01:40,370 --> 00:01:43,210 En otras palabras, si quieres algo de cierta cantidad de datos, 33 00:01:43,210 --> 00:01:46,670 cómo decirle la API para obtener esos datos puede variar un poco. 34 00:01:46,670 --> 00:01:49,210 Por lo general, implica la realización de algún tipo de solicitud de red. 35 00:01:49,210 --> 00:01:53,130 En otras palabras, el acceso a algún tipo de URL que va a decir la API 36 00:01:53,130 --> 00:01:56,190 exactamente lo que quiere, pero los datos son casi siempre se envían de vuelta, 37 00:01:56,190 --> 00:01:59,530 en otras palabras, el número 4 en JSON. 38 00:01:59,530 --> 00:02:01,030 >> ¿Qué es JSON exactamente? 39 00:02:01,030 --> 00:02:03,030 Como he dicho, JavaScript Object Notation. 40 00:02:03,030 --> 00:02:07,090 Es básicamente el estándar universal para la transmisión y recepción de datos. 41 00:02:07,090 --> 00:02:11,410 La idea es que usted tiene estas tres categorías de cosas. 42 00:02:11,410 --> 00:02:13,540 Usted tiene arrays, HashMaps, y primitivas. 43 00:02:13,540 --> 00:02:16,580 Matrices y HashMaps te he mirado un poco en CS50, 44 00:02:16,580 --> 00:02:19,870 pero has conseguido una especie de sentido muy estricto de lo que son. 45 00:02:19,870 --> 00:02:22,780 En otras palabras, con arreglos que saben que están escriba encuadernado, 46 00:02:22,780 --> 00:02:26,560 por lo que sólo tienen una clase de tipo que va a lo largo de toda la matriz. 47 00:02:26,560 --> 00:02:29,310 JSON es mucho más indulgente con ese tipo de cosas. 48 00:02:29,310 --> 00:02:33,590 Básicamente, la idea es que la construcción de este objeto, 49 00:02:33,590 --> 00:02:36,270 que puede estar compuesto de cualquiera de estas 3 cosas 50 00:02:36,270 --> 00:02:39,470 y puede estar compuesto por los múltiples de ellos, y pueden estar anidados. 51 00:02:39,470 --> 00:02:42,110 >> Aquí hay una especie de ejemplo de JSON, 52 00:02:42,110 --> 00:02:47,910 que son estas llaves aquí representan el HashMap, 53 00:02:47,910 --> 00:02:51,400 y un HashMap es básicamente una asignación de algún tipo de clave 54 00:02:51,400 --> 00:02:53,340 a algún tipo de valor. 55 00:02:53,340 --> 00:02:56,440 Verás que aquí tenemos la clave de propiedades, 56 00:02:56,440 --> 00:02:59,600 y eso es mapear en una matriz, que es todo esto. 57 00:02:59,600 --> 00:03:04,120 Vemos otro elemento del HashMap, que es este isAwesome clave, 58 00:03:04,120 --> 00:03:07,370 que se asigna a un valor simple verdad, es decir, un booleano. 59 00:03:07,370 --> 00:03:09,420 Las primitivas pueden ser cadenas. Ellos pueden ser números enteros. 60 00:03:09,420 --> 00:03:11,960 Pueden ser Bools, nada de eso. 61 00:03:11,960 --> 00:03:18,410 Y ver el contenido de esta matriz que apunta a propiedades tiene 2 cadenas en el mismo, 62 00:03:18,410 --> 00:03:20,050 auto-similar y maravilloso. 63 00:03:20,050 --> 00:03:27,410 Esas son dos propiedades de JSON, y vemos que JSON es impresionante. 64 00:03:27,410 --> 00:03:30,060 Para ver que un poco más de cerca que voy a construir 65 00:03:30,060 --> 00:03:32,870 un ejemplo más complejo de JSON aquí. 66 00:03:32,870 --> 00:03:37,000 >> Vamos a empezar con una matriz, por ejemplo, sólo una matriz vacía. 67 00:03:37,000 --> 00:03:39,180 Pero eso es una especie de aburrido, así que vamos a llenarlo un poco, 68 00:03:39,180 --> 00:03:43,420 y como he dicho, las matrices en JSON se escribe unido, 69 00:03:43,420 --> 00:03:46,400 lo que también podría tener una cadena de aquí, que es hi, 70 00:03:46,400 --> 00:03:49,330 y ese es otro elemento de esa matriz. 71 00:03:49,330 --> 00:03:53,450 Y del mismo modo, podríamos añadir una hashmapping aquí, que va a tener unas pocas asignaciones. 72 00:03:53,450 --> 00:04:00,470 Va a tener una asignación de nombre a la cadena de Billy. 73 00:04:00,470 --> 00:04:04,590 Contamos con una asignación de nombre a Billy, y tenemos un mapeo de 74 00:04:04,590 --> 00:04:10,860 color favorito el azul. 75 00:04:10,860 --> 00:04:12,700 Eso es, básicamente, un buen ejemplo de JSON. 76 00:04:12,700 --> 00:04:18,160 En cierto modo se consigue en-gritos, necesitan una coma allí, todas las diferentes partes del mismo. 77 00:04:18,160 --> 00:04:21,140 Una vez más, no está obligado a escribir todo lo que puede tener cualquier clase de tipos 78 00:04:21,140 --> 00:04:24,710 dentro de lo que quieras, y la idea es que es auto-similar. 79 00:04:24,710 --> 00:04:28,830 En otras palabras, esto de aquí es un objeto JSON, como es toda esta cosa, 80 00:04:28,830 --> 00:04:33,200 como es esto, lo que puede tener un primitivo ser un objeto, 81 00:04:33,200 --> 00:04:35,680 una matriz ser un objeto o un HashMap ser un objeto. 82 00:04:35,680 --> 00:04:40,270 >> Como se puede ver de clase, JSON es muy, muy útil, ya que es muy versátil. 83 00:04:40,270 --> 00:04:45,860 Usted puede tener todos los datos posibles que se pueden concebir almacenados en JSON. 84 00:04:45,860 --> 00:04:47,900 Eso hace que sea un lenguaje realmente agradable de usar con las API 85 00:04:47,900 --> 00:04:50,770 porque más o menos significa que no importa lo que los datos que desea 86 00:04:50,770 --> 00:04:54,270 que va a haber alguna manera de ponerlo de nuevo en JSON. 87 00:04:54,270 --> 00:04:58,600 A pocas propiedades que hacen JSON especialmente bueno para este tipo de cosas. 88 00:04:58,600 --> 00:05:02,270 Como se puede ver, en comparación con un montón de cosas que usted ha estado trabajando en CS50 89 00:05:02,270 --> 00:05:06,040 es relativamente muy fácil de leer y también muy fácil de escribir. 90 00:05:06,040 --> 00:05:09,700 Puede guión si lo desea, como si estuviera haciendo en ese ejemplo, 91 00:05:09,700 --> 00:05:12,990 que le da una buena versión, bastante que se puede ver muy bien. 92 00:05:12,990 --> 00:05:17,150 Pero, por otra parte, también es fácil de leer y escribir para un ordenador. 93 00:05:17,150 --> 00:05:19,870 En otras palabras, es fácil de analizar y fácil de codificar, 94 00:05:19,870 --> 00:05:23,820 lo que significa que es bastante rápido en cuanto a la lectura de los datos se refiere, 95 00:05:23,820 --> 00:05:26,460 y JSON se puede generar muy rápidamente. 96 00:05:26,460 --> 00:05:30,300 >> También es muy fácil de acceder a las diferentes partes de JSON y ese tipo de cosas. 97 00:05:30,300 --> 00:05:33,320 Eso está muy bien, y además, el hecho de que es auto-similar 98 00:05:33,320 --> 00:05:36,090 en otras palabras, el hecho de que se puede tener dentro de JSON JSON JSON dentro 99 00:05:36,090 --> 00:05:40,040 es muy agradable para el almacenamiento de datos. 100 00:05:40,040 --> 00:05:45,490 Otra parte que generalmente es muy útil en el trabajo con las API es jQuery. 101 00:05:45,490 --> 00:05:49,290 Usted ha aprendido un poco de JavaScript, que es una buena manera de 102 00:05:49,290 --> 00:05:53,710 para manipular HTML y CSS dentro de un sitio web. 103 00:05:53,710 --> 00:05:57,190 Pero puede clase de ser un dolor de código en JavaScript sin formato, 104 00:05:57,190 --> 00:05:59,810 en gran parte porque JavaScript es un lenguaje muy detallado. 105 00:05:59,810 --> 00:06:03,020 Usted tiene que aprender mucho de la sintaxis, y sólo para hacer cosas muy simples 106 00:06:03,020 --> 00:06:07,590 se necesita una gran cantidad de código, por lo que jQuery es una biblioteca de JavaScript. 107 00:06:07,590 --> 00:06:09,800 En otras palabras, se trata de un archivo JavaScript que puede cargar 108 00:06:09,800 --> 00:06:12,730 y luego usar las funciones de jQuery para hacer ciertas cosas. 109 00:06:12,730 --> 00:06:15,670 Y jQuery básicamente hace la vida mucho más fácil. 110 00:06:15,670 --> 00:06:20,390 Simplifica lo tomaría cientos de líneas en JavaScript a unas pocas líneas en jQuery. 111 00:06:20,390 --> 00:06:24,430 >> Es especialmente útil si usted está utilizando las API, ya que generalmente 112 00:06:24,430 --> 00:06:27,600 cómo se va a acceder API es haciendo peticiones AJAX, 113 00:06:27,600 --> 00:06:30,130 y creo que David se ha mencionado en la conferencia que las solicitudes de AJAX 114 00:06:30,130 --> 00:06:33,120 son por lo general cuando usted está haciendo una solicitud de red a algún tipo de servidor 115 00:06:33,120 --> 00:06:37,760 y volver a algún tipo de datos y la actualización de una página instantáneamente. 116 00:06:37,760 --> 00:06:41,840 Mientras que en JavaScript sin formato que llevaría el número de líneas locas 117 00:06:41,840 --> 00:06:44,620 para validar todos los encabezados y hacer todas esas cosas, 118 00:06:44,620 --> 00:06:46,810 jQuery tiene una función muy simple llamado AJAX, 119 00:06:46,810 --> 00:06:51,760 y todo lo que tiene que hacer en AJAX es dar a los parámetros que se quieren dar a la API, 120 00:06:51,760 --> 00:06:56,830 la ubicación de la API y cualquier tipo adicional de opciones que desee configurar. 121 00:06:56,830 --> 00:07:02,480 Es muy, muy bueno y muy útil para este tipo de cosas. 122 00:07:02,480 --> 00:07:06,970 Eso es todo lo que necesitamos para empezar a recibir nuestras manos sucias en la API. 123 00:07:06,970 --> 00:07:10,220 >> Voy a traer a colación algunos ejemplos y explorar sus diferentes propiedades 124 00:07:10,220 --> 00:07:13,150 y por qué son útiles para diferentes tipos de cosas. 125 00:07:13,150 --> 00:07:15,570 La primera cosa que realmente voy a mostrar es algo que estoy trabajando en 126 00:07:15,570 --> 00:07:18,310 en mi laboratorio de investigación, que es un visor de Ngram, 127 00:07:18,310 --> 00:07:23,270 y, básicamente, la idea de un Visor Ngram se puede buscar algún tipo de palabra 128 00:07:23,270 --> 00:07:28,840 o frase y ver con qué frecuencia se apareció en un cierto conjunto de texto en el tiempo. 129 00:07:28,840 --> 00:07:33,160 Este ejemplo es este conjunto de datos de los bebés 130 00:07:33,160 --> 00:07:36,480 que nacieron en Nueva York entre 1920 y 2000. 131 00:07:36,480 --> 00:07:40,090 Podemos buscar, por ejemplo, para el nombre de Jennifer, 132 00:07:40,090 --> 00:07:44,400 y vemos que antes de 1960 en realidad no se utilizó casi nada, 133 00:07:44,400 --> 00:07:48,900 y luego como nos metemos en los últimos años se está volviendo cada vez más utilizada. 134 00:07:48,900 --> 00:07:53,680 También podemos hacer comparaciones, por lo que si comparamos a Jennifer, por ejemplo, Thomas, 135 00:07:53,680 --> 00:07:56,520 podemos ver Thomas ha sido bastante frecuente a lo largo de la historia, 136 00:07:56,520 --> 00:07:58,780 mientras que Jennifer es un nombre más reciente. 137 00:07:58,780 --> 00:08:00,590 Podemos hacer ese tipo de cosas. 138 00:08:00,590 --> 00:08:02,460 >> ¿Cómo funciona esta aplicación? 139 00:08:02,460 --> 00:08:06,030 Básicamente, funciona a través de una API. 140 00:08:06,030 --> 00:08:08,660 En otras palabras, tenemos ciertos parámetros aquí. 141 00:08:08,660 --> 00:08:11,360 Contamos con los parámetros de lo que en realidad estamos buscando, 142 00:08:11,360 --> 00:08:13,720 ¿cuáles son esos nombres, y luego tenemos el inmueble algunos otros, 143 00:08:13,720 --> 00:08:16,570 como el eje Y y el eje X. 144 00:08:16,570 --> 00:08:18,440 Usted puede ver que tenemos algunas opciones diferentes en cuanto a la 145 00:08:18,440 --> 00:08:20,860 tiempo de resolución a utilizar y ese tipo de cosas. 146 00:08:20,860 --> 00:08:26,700 Tenemos estas opciones en cuanto a los datos que realmente queremos de la base de datos, 147 00:08:26,700 --> 00:08:29,400 y queremos obtener esos datos de alguna manera útil. 148 00:08:29,400 --> 00:08:34,020 Por lo general, si se consulta la base de datos directamente sería una especie de ser un dolor para hacer 149 00:08:34,020 --> 00:08:38,970 presumiblemente porque estos datos acerca de los nombres del bebé vive en alguna base de datos en alguna parte, 150 00:08:38,970 --> 00:08:42,789 y sería realmente complicado tener que consultar manualmente 151 00:08:42,789 --> 00:08:45,830 y decidir exactamente qué datos para volver. 152 00:08:45,830 --> 00:08:49,300 En otras palabras, sólo se preocupan por Jennifer y Thomas en este caso, 153 00:08:49,300 --> 00:08:53,410 y sólo se preocupan en un determinado eje y todas esas cosas. 154 00:08:53,410 --> 00:08:55,720 >> ¿Cómo podemos evitar esto? 155 00:08:55,720 --> 00:09:01,200 Para profundizar en esta API un poco más te voy a mostrar otro ejemplo de esta plataforma 156 00:09:01,200 --> 00:09:04,490 que utiliza un conjunto de datos ligeramente diferente. 157 00:09:04,490 --> 00:09:09,950 Este conjunto de datos, en lugar de ser los nombres del bebé, es en realidad la totalidad 158 00:09:09,950 --> 00:09:12,460 imprimir datos de publicaciones de la Biblioteca Abierta, 159 00:09:12,460 --> 00:09:18,410 que es una fuente gigante de textos publicados a lo largo de los últimos 100 años más o menos. 160 00:09:18,410 --> 00:09:23,540 La idea es que tenemos esta compository de millones y millones de textos, 161 00:09:23,540 --> 00:09:27,420 que ahora podemos buscar palabras y frases diferentes pulg 162 00:09:27,420 --> 00:09:30,840 He aquí un ejemplo que varía un poco diferente del ejemplo anterior 163 00:09:30,840 --> 00:09:33,350 Te mostré, que es que tenemos estos 3 consultas de búsqueda, 164 00:09:33,350 --> 00:09:36,290 la guerra, la guerra y la palabra francesa para la guerra, que es guerre. 165 00:09:36,290 --> 00:09:40,380 Y estamos buscando dentro de los 3 diferentes secciones de la base de datos total. 166 00:09:40,380 --> 00:09:45,080 En otras palabras, en esta primera consulta, nosotros solo estamos buscando en los EE.UU., 167 00:09:45,080 --> 00:09:51,150 en el segundo, sólo en el Reino Unido, y el tercero sólo de las obras publicadas en Francia. 168 00:09:51,150 --> 00:09:53,120 Vemos algunos patrones interesantes. 169 00:09:53,120 --> 00:09:58,180 Por ejemplo, vemos a la vuelta de aquí que- 170 00:09:58,180 --> 00:10:02,410 Vaya, se me estropeó el eje un poco, pero se puede ver a la derecha en este rango aquí 171 00:10:02,410 --> 00:10:05,730 en torno a la Guerra Civil hay un gran repunte en la edición americana 172 00:10:05,730 --> 00:10:08,340 pero no un gran repunte en los otros dos, y eso es obviamente porque 173 00:10:08,340 --> 00:10:10,880 la Guerra Civil que estaba sucediendo en ese momento. 174 00:10:10,880 --> 00:10:13,890 >> Podemos ver algunas cosas interesantes allí, 175 00:10:13,890 --> 00:10:17,070 pero lo que realmente importa es cómo llegamos a estos datos. 176 00:10:17,070 --> 00:10:21,320 Te llevaré detrás de las escenas de esta aplicación en un poco. 177 00:10:21,320 --> 00:10:24,540 Un buen truco es que si usted está trabajando con el sitio y el tipo de quieren saber 178 00:10:24,540 --> 00:10:27,430 lo que pasa detrás de las escenas, puede abrir las herramientas de desarrollo. 179 00:10:27,430 --> 00:10:30,200 Voy a estar utilizando herramientas de Chrome para desarrolladores, y para llegar a los 180 00:10:30,200 --> 00:10:35,160 usted puede hacer el control, shift, J, y que te lleva a la consola de JavaScript. 181 00:10:35,160 --> 00:10:37,420 Hay algunas fichas aquí. 182 00:10:37,420 --> 00:10:39,680 Todos ellos pueden ser muy útiles en diferentes circunstancias, pero me preocupo por la red 183 00:10:39,680 --> 00:10:44,150 ficha en este momento, y que en realidad tiene que actualizar para conseguir ese trabajo. 184 00:10:44,150 --> 00:10:50,180 Oh, lo siento. 185 00:10:50,180 --> 00:10:52,320 Le gusta dar un ejemplo al azar. 186 00:10:52,320 --> 00:10:54,700 Bueno, vamos a utilizar este ejemplo entonces. 187 00:10:54,700 --> 00:11:01,330 >> La idea es que hay aquí esta API, 188 00:11:01,330 --> 00:11:05,330 y usted puede ver exactamente lo que la API está regresando. 189 00:11:05,330 --> 00:11:10,220 Esto es lo que la aplicación está a la vuelta de la API de haber enviado la solicitud. 190 00:11:10,220 --> 00:11:13,680 Permítanme ampliar un poco, 191 00:11:13,680 --> 00:11:18,340 y que, básicamente, puede ver que es sólo una serie de pares de valores clave en JSON. 192 00:11:18,340 --> 00:11:23,220 En otras palabras, tenemos este HashMap aquí que la asignación de valores. 193 00:11:23,220 --> 00:11:26,440 En otras palabras, es la cartografía años a valores. 194 00:11:26,440 --> 00:11:32,600 En 1765, cualquier palabra que inicialmente buscado se usa 90 veces 195 00:11:32,600 --> 00:11:35,810 de 1 millón, así que estamos volviendo a este resultado. 196 00:11:35,810 --> 00:11:40,280 No es exactamente JSON ya que tenemos esta cabecera resultado poco aquí, 197 00:11:40,280 --> 00:11:45,630 pero observe que este objeto entero aquí es sólo una gran mancha grande JSON. 198 00:11:45,630 --> 00:11:51,070 Tenemos aquí una serie que contiene este elemento de su conjunto, 199 00:11:51,070 --> 00:11:55,590 y se puede ver que todo elemento termina allí, y luego tenemos otro gran elemento 200 00:11:55,590 --> 00:11:59,430 que va todo el camino hasta el final, y que termina aquí. 201 00:11:59,430 --> 00:12:02,200 Contamos con una amplia muy grande con 2 objetos en ella, 202 00:12:02,200 --> 00:12:04,630 y cada uno de esos objetos es un HashMap. 203 00:12:04,630 --> 00:12:07,340 Se puede ver en cada uno de esos HashMaps observa una asociación 204 00:12:07,340 --> 00:12:12,700 de este valor de índice 0 y el valor de este valor a otro HashMap, 205 00:12:12,700 --> 00:12:18,360 que a su vez es el mapeo de valores del eje X con los valores del eje Y. 206 00:12:18,360 --> 00:12:20,970 >> Usted puede ver JSON pone un poco complicado, pero en general, 207 00:12:20,970 --> 00:12:24,190 en realidad es muy útil, y es muy fácil de acceder en comparación con 208 00:12:24,190 --> 00:12:27,390 otros diferentes formas de notación. 209 00:12:27,390 --> 00:12:30,550 En cuanto a lo que en realidad estamos enviando datos a la API para obtener, 210 00:12:30,550 --> 00:12:34,690 Voy a entrar en la parte de atrás un poco aquí. 211 00:12:34,690 --> 00:12:39,850 Este es el gran archivo JavaScript que está manejando todas las interacciones de la aplicación web, 212 00:12:39,850 --> 00:12:44,810 por lo que no les importa la mayor parte de esto, pero nos preocupamos por parte de ella. 213 00:12:44,810 --> 00:12:47,410 Por ejemplo, nos preocupamos por esta función BuildQuery, 214 00:12:47,410 --> 00:12:50,670 y la idea de esta función es básicamente lo que está buscando alrededor de la página, 215 00:12:50,670 --> 00:12:53,750 averiguar lo que el usuario desea consultar, en otras palabras, 216 00:12:53,750 --> 00:12:57,090 la comprobación de las cajas donde han aportes de sus términos de búsqueda, 217 00:12:57,090 --> 00:13:01,380 comprobación de los diferentes valores Y y del eje X que han elegido y todo ese tipo de cosas, 218 00:13:01,380 --> 00:13:06,650 y que va a escupir este valor de la consulta, que luego se puede enviar a la API. 219 00:13:06,650 --> 00:13:09,180 >> Esto parece complicado, y es complicado bastante 220 00:13:09,180 --> 00:13:18,090 pero lo que voy a hacer, de hecho, ya estoy haciendo esto, que es gran- 221 00:13:18,090 --> 00:13:21,640 es que me voy a poner la consola para imprimir exactamente ese valor consulta 222 00:13:21,640 --> 00:13:28,110 que está enviando fuera a la API. 223 00:13:28,110 --> 00:13:30,870 Eso es en realidad aquí mismo. Lo sentimos, imprime un montón de cosas. 224 00:13:30,870 --> 00:13:33,690 Pero esto es lo que nos importa, este objeto aquí. 225 00:13:33,690 --> 00:13:35,300 Este es el objeto de la consulta. 226 00:13:35,300 --> 00:13:40,670 En otras palabras, esto es exactamente lo que la aplicación web es el envío a la API, 227 00:13:40,670 --> 00:13:45,730 y así que vamos a ver dentro de un poco, y vemos que tenemos algunos valores aquí. 228 00:13:45,730 --> 00:13:48,710 Vemos que tenemos este tipo de conteo, que es ocurrencias por millón de palabras, 229 00:13:48,710 --> 00:13:51,460 que es exactamente lo que hemos elegido en el eje Y de aquí. 230 00:13:51,460 --> 00:13:53,740 Ahí es donde que viene. 231 00:13:53,740 --> 00:13:58,010 Tenemos un valor de base de datos, lo que significa que hay una base de datos determinada 232 00:13:58,010 --> 00:14:01,610 que estos datos se vive, y queremos acceder a esos datos específicamente 233 00:14:01,610 --> 00:14:04,950 en lugar de los nombres de bebé de datos, por ejemplo. 234 00:14:04,950 --> 00:14:08,320 Luego tenemos este valor grupos, 235 00:14:08,320 --> 00:14:12,090 que ya es decir que queremos buscar por año en comparación con 236 00:14:12,090 --> 00:14:16,030 cualquier otro valor X eje. 237 00:14:16,030 --> 00:14:19,040 Entonces tenemos un método, que algunas API hará varias cosas. 238 00:14:19,040 --> 00:14:22,360 En otras palabras, esta API también puede devolver otros tipos de datos, 239 00:14:22,360 --> 00:14:27,740 pero en este caso, queremos que el mapeo de valores del eje X con los valores del eje Y. 240 00:14:27,740 --> 00:14:30,730 Eso es lo que está diciendo que hacer allí, 241 00:14:30,730 --> 00:14:35,020 y tenemos esta matriz búsqueda límites, que contiene dos valores. 242 00:14:35,020 --> 00:14:40,720 El primero es lo que vemos aquí, que es de todos los valores 243 00:14:40,720 --> 00:14:43,020 contenida dentro de esa pequeña caja primero en la parte superior. 244 00:14:43,020 --> 00:14:47,570 >> En otras palabras, queremos buscar la palabra batalla, y queremos filtrar 245 00:14:47,570 --> 00:14:51,920 por textos en español dentro de la literatura americana. 246 00:14:51,920 --> 00:14:54,590 Tenemos este país, que es EE.UU.. 247 00:14:54,590 --> 00:14:59,130 Tenemos una lengua, que es el Inglés, así que tenemos todos estos diferentes partes 248 00:14:59,130 --> 00:15:02,690 que están diciendo la API exactamente lo que queremos. 249 00:15:02,690 --> 00:15:04,940 No sabemos cuáles son los datos que obtenemos de espalda es, sin embargo, 250 00:15:04,940 --> 00:15:10,970 pero sabemos que los datos se van a tomar una forma determinada. 251 00:15:10,970 --> 00:15:13,650 Este ejemplo es una especie de en el lado complicado, 252 00:15:13,650 --> 00:15:16,180 y no necesariamente sería el uso de una API este complejo, 253 00:15:16,180 --> 00:15:20,600 pero esto es mostrar el alcance y poder de lo que API puede hacer. 254 00:15:20,600 --> 00:15:24,980 En otras palabras, utilizando un sistema de consulta relativamente simple que básicamente tienen un cuadro de entrada 255 00:15:24,980 --> 00:15:29,490 con unos selectores de algunos otros en diferentes lugares. 256 00:15:29,490 --> 00:15:32,010 >> Permítanme amplía aquí. 257 00:15:32,010 --> 00:15:37,720 Tenemos un cuadro de entrada con una selección de metadatos diferentes pocas, 258 00:15:37,720 --> 00:15:40,610 y contamos con eje Y y el eje X selecciones. 259 00:15:40,610 --> 00:15:42,830 En realidad no tienen campos que muchos 260 00:15:42,830 --> 00:15:46,210 y podemos ver muy fácilmente que somos capaces de consultar algún tipo de API 261 00:15:46,210 --> 00:15:48,510 y obtener datos de vuelta y luego lo puso en esta tabla, 262 00:15:48,510 --> 00:15:52,080 que luego se va a mostrar de una manera útil. 263 00:15:52,080 --> 00:15:54,970 Para ver otro ejemplo que podría ser un poco más familiar para ustedes 264 00:15:54,970 --> 00:15:56,510 vamos a recurrir a Facebook. 265 00:15:56,510 --> 00:15:59,440 API de Facebook que se llama el Gráfico de Facebook, 266 00:15:59,440 --> 00:16:04,390 y, básicamente, lo que significa que es Facebook se ve como esta enorme base de datos 267 00:16:04,390 --> 00:16:08,000 de muchas partes diferentes que tienen todas las relaciones determinadas entre sí. 268 00:16:08,000 --> 00:16:11,070 En otras palabras, soy un usuario de Facebook, así que tengo un perfil, 269 00:16:11,070 --> 00:16:14,310 y también tengo algunos amigos, y cada uno de ellos tiene un perfil, 270 00:16:14,310 --> 00:16:17,580 y cada uno de mis amigos tiene un muro, que tiene diferentes comentarios sobre el mismo, 271 00:16:17,580 --> 00:16:20,800 y cada uno de esos comentarios tiene gustos y todas esas cosas. 272 00:16:20,800 --> 00:16:23,100 >> Hay un montón de partes diferentes a Facebook. 273 00:16:23,100 --> 00:16:26,670 Es una API enormemente complejo, y hay un montón que puedes hacer con él, 274 00:16:26,670 --> 00:16:28,450 pero en realidad es bastante fácil de usar. 275 00:16:28,450 --> 00:16:33,680 Voy a empezar por ir a graph.facebook.com / billyjanitsch, 276 00:16:33,680 --> 00:16:38,430 cual es mi nombre de cuenta única, y su nombre de cuenta será o bien 277 00:16:38,430 --> 00:16:43,710 algún tipo de palabra si lo ha elegido, o puede que solo sea una cadena de números. 278 00:16:43,710 --> 00:16:46,360 Lo que se obtiene es información bastante básica. 279 00:16:46,360 --> 00:16:50,460 Vemos que tengo un nombre, que es Billy, un apellido, que es Janitsch. 280 00:16:50,460 --> 00:16:53,370 Hay una única ID de Facebook que tengo. 281 00:16:53,370 --> 00:16:57,920 Se puede ver que soy hombre y que tengo mi configuración de idioma 282 00:16:57,920 --> 00:17:01,290 para Inglés británico. 283 00:17:01,290 --> 00:17:03,490 En otras palabras, estamos viendo una información muy básica aquí. 284 00:17:03,490 --> 00:17:08,670 No es demasiado, pero nos da una idea de lo que hay. 285 00:17:08,670 --> 00:17:10,849 >> Podemos hacer lo mismo con David Malan, por ejemplo. 286 00:17:10,849 --> 00:17:13,599 Creo que su nombre es dmalan. 287 00:17:13,599 --> 00:17:16,369 Vemos a David Malan tiene un identificador único. 288 00:17:16,369 --> 00:17:19,300 Él tiene un nombre, nombre de pila, segundo nombre, apellido. 289 00:17:19,300 --> 00:17:24,210 También vemos que es varón y tiene su conjunto de idiomas para EE.UU. Inglés. 290 00:17:24,210 --> 00:17:26,869 En otras palabras, estamos viendo bastante información básica aquí. 291 00:17:26,869 --> 00:17:28,860 Ahora, ¿qué pasa si tratamos de ver algo más? 292 00:17:28,860 --> 00:17:33,060 Digamos que yo estoy interesado en lo que David Malan ha gustado en Facebook. 293 00:17:33,060 --> 00:17:36,860 Que puedo hacer / talla. Ahora nos hemos encontrado con un problema. 294 00:17:36,860 --> 00:17:39,280 Tenemos una especie de error que dice que un testigo de acceso 295 00:17:39,280 --> 00:17:41,660 está obligado a solicitar este recurso. 296 00:17:41,660 --> 00:17:44,730 Pero si se piensa en ello, que en realidad tiene sentido porque sería raro 297 00:17:44,730 --> 00:17:47,830 si se puede acceder a cada parte de la base de datos de Facebook 298 00:17:47,830 --> 00:17:50,170 sólo a partir de algún tipo de API simple, ¿verdad? 299 00:17:50,170 --> 00:17:56,040 En otras palabras, es de suponer que su información no se puede acceder por cualquier persona que lo desee. 300 00:17:56,040 --> 00:17:58,330 >> Este error es precisamente lo que significa. 301 00:17:58,330 --> 00:18:03,630 Algunas API requieren ciertos permisos para acceder a sus datos. 302 00:18:03,630 --> 00:18:06,940 Y APIs aún más avanzada, como el Facebook uno, 303 00:18:06,940 --> 00:18:09,840 requerirá ciertos permisos para hacer ciertas cosas. 304 00:18:09,840 --> 00:18:12,650 Puedo ver esta información básica acerca de David Malan. 305 00:18:12,650 --> 00:18:15,950 Puedo ver que es masculino y que vive en los EE.UU., 306 00:18:15,950 --> 00:18:19,270 pero no puedo ver nada más allá de eso. 307 00:18:19,270 --> 00:18:23,050 Para evitar esto, por ahora, Facebook tiene esta buena herramienta 308 00:18:23,050 --> 00:18:27,690 que es la gráfica API explorador, y la idea de que se puede ordenar de 309 00:18:27,690 --> 00:18:31,880 compensar los permisos para ti mismo sobre la base de su propia cuenta 310 00:18:31,880 --> 00:18:35,680 a continuación, ver las cosas que específicamente su cuenta puede ver. 311 00:18:35,680 --> 00:18:45,120 Por ejemplo, si hago graph.facebook.com/billyjanitsch/likes- 312 00:18:45,120 --> 00:18:53,510 ¡Vaya, supongo que tengo que revalidar mi token aquí. 313 00:18:53,510 --> 00:18:55,950 Bien. 314 00:18:55,950 --> 00:19:01,740 Si lo hago de nuevo, genial, ahora veo que me sale este objeto de nuevo 315 00:19:01,740 --> 00:19:06,300 que dice que me gustan los fideos de la piscina, que se encuentran en la categoría Juegos y juguetes. 316 00:19:06,300 --> 00:19:08,620 Me gusta morsas, que están en la categoría de los Animales. 317 00:19:08,620 --> 00:19:10,180 Estos son mis gustos real Facebook. 318 00:19:10,180 --> 00:19:13,280 Son un poco embarazoso. 319 00:19:13,280 --> 00:19:16,090 >> Pero podemos ver todos estos datos se devuelven en JSON. 320 00:19:16,090 --> 00:19:18,160 Es muy fácil de leer. 321 00:19:18,160 --> 00:19:20,970 En otras palabras, tenemos esta asignación de datos de algún tipo de una matriz, 322 00:19:20,970 --> 00:19:25,220 y cada elemento de esta matriz es un HashMap que mapea 323 00:19:25,220 --> 00:19:28,530 el nombre de un producto y la categoría de un igual. 324 00:19:28,530 --> 00:19:31,240 Cada uno como tiene un identificador único. 325 00:19:31,240 --> 00:19:34,510 Hay todo tipo de cosas diferentes de datos que podemos obtener, 326 00:19:34,510 --> 00:19:37,980 y si usted está interesado en el uso de la API de Facebook para un proyecto final CS50 327 00:19:37,980 --> 00:19:40,720 o algo como eso en realidad es bastante factible. 328 00:19:40,720 --> 00:19:44,260 Básicamente cómo moverse por la cosa de autenticación es Facebook 329 00:19:44,260 --> 00:19:48,030 utiliza un sistema llamado OAuth, o autenticación abierta, 330 00:19:48,030 --> 00:19:52,870 y yo no quiero entrar en eso ahora porque OAuth o los diferentes tipos 331 00:19:52,870 --> 00:19:56,060 de autenticación tiende a variar mucho entre diferentes APIs, 332 00:19:56,060 --> 00:19:58,320 por lo que podía pasar mucho tiempo revisando cada uno, 333 00:19:58,320 --> 00:20:01,170 pero en realidad son bastante auto-explicativo. 334 00:20:01,170 --> 00:20:04,050 >> Si Google API de Facebook es muy fácil de leer. 335 00:20:04,050 --> 00:20:06,670 Hay un conjunto de especificaciones. 336 00:20:06,670 --> 00:20:10,210 Por ejemplo, esta es la documentación de la API de Facebook, 337 00:20:10,210 --> 00:20:14,170 y se puede ver que estoy en la página de usuario, por lo que puede aprender todo acerca de los diferentes tipos de cosas 338 00:20:14,170 --> 00:20:17,170 que están disponibles para conseguir los datos de la medida de lo 339 00:20:17,170 --> 00:20:21,550 y también los diferentes permisos que necesito para poder acceder a ellos. 340 00:20:21,550 --> 00:20:25,470 Como hemos visto, no es necesario tener permisos para acceder al nombre o el género, 341 00:20:25,470 --> 00:20:29,380 pero más allá de que es preciso tener permisos para la mayoría de las cosas. 342 00:20:29,380 --> 00:20:33,040 Esta página, o mejor dicho, este sitio web también le dirá cómo llegar 343 00:20:33,040 --> 00:20:35,640 un símbolo de poder autenticarse. 344 00:20:35,640 --> 00:20:39,290 La mayoría de los sistemas de autenticación de utilizar algún tipo de señal 345 00:20:39,290 --> 00:20:42,880 donde se obtiene este valor único, que es una cadena muy larga y aleatoria, 346 00:20:42,880 --> 00:20:46,240 y de que manera se puede asociar a la solicitud que usted está haciendo con usted. 347 00:20:46,240 --> 00:20:50,560 En otras palabras, ellos saben que no estás haciendo nada sospechoso con sus datos. 348 00:20:50,560 --> 00:20:53,340 Ellos saben exactamente lo que está recibiendo. 349 00:20:53,340 --> 00:20:56,180 También saben que tienes permiso para ver esta información. 350 00:20:56,180 --> 00:20:59,110 >> Si ha realizado una aplicación de Facebook y su aplicación tiene ciertos usuarios, 351 00:20:59,110 --> 00:21:03,380 y los usuarios que han permitido aplicación para acceder a ciertas partes de su perfil, 352 00:21:03,380 --> 00:21:07,790 entonces cualquier cosa API clave o token que esa aplicación está utilizando 353 00:21:07,790 --> 00:21:11,090 será capaz de acceder a los datos para estos usuarios. 354 00:21:11,090 --> 00:21:13,780 Esto puede sonar complicado, pero no es tan malo, 355 00:21:13,780 --> 00:21:16,810 y si quieres usar Facebook Yo recomendaría que usted 356 00:21:16,810 --> 00:21:18,990 considerar jugar con su API. 357 00:21:18,990 --> 00:21:21,610 Es muy bueno, y usted puede hacer un montón de cosas diferentes a ella. 358 00:21:21,610 --> 00:21:24,880 Si el usuario le concede estos permisos puede incluso volver a la API 359 00:21:24,880 --> 00:21:28,820 y decir que quieres publicar en realidad a la pared del usuario, o quiero tenerlos publicar una foto, 360 00:21:28,820 --> 00:21:32,390 y por eso en su servicio de noticias que a veces tendrás esas cosas molestas 361 00:21:32,390 --> 00:21:37,840 diciendo que su amigo ha visto el video en algún sitio raro o algo por el estilo. 362 00:21:37,840 --> 00:21:43,120 Esto se debe a que la aplicación ha tenido acceso a publicar en el muro de esa persona. 363 00:21:43,120 --> 00:21:48,350 La idea general de la API de Facebook es bastante complicado, pero también es útil realmente. 364 00:21:48,350 --> 00:21:53,220 Definitivamente vale la pena visitar si usted todavía está buscando un proyecto final. 365 00:21:53,220 --> 00:21:57,930 >> Otro conjunto de APIs que me voy a ir otra vez es CS50 APIs. 366 00:21:57,930 --> 00:22:00,070 Permítanme hacer un zoom aquí. 367 00:22:00,070 --> 00:22:03,390 CS50 realidad ha reunido una serie de APIs 368 00:22:03,390 --> 00:22:07,080 que se puede utilizar para un proyecto final o simplemente para cualquier cosa que usted está haciendo. 369 00:22:07,080 --> 00:22:12,830 Y están en su mayoría relacionados con la Universidad de Harvard, y varían desde el menú HUDS, 370 00:22:12,830 --> 00:22:17,780 por ejemplo, a esta API Harvard Eventos, que le permitirá acceder a una lista de 371 00:22:17,780 --> 00:22:21,290 diferentes eventos que están sucediendo en Harvard y ese tipo de cosas. 372 00:22:21,290 --> 00:22:24,510 Y, entonces, puede hacer clic en cualquiera de estos y obtener una especificación para ello, 373 00:22:24,510 --> 00:22:28,090 que podrás encontrar para cualquier API, y es la idea 374 00:22:28,090 --> 00:22:33,920 le permite saber, A, específicamente lo que solicitar a la API y cómo solicitarla. 375 00:22:33,920 --> 00:22:37,370 En otras palabras, si desea que todos los eventos que están sucediendo mañana 376 00:22:37,370 --> 00:22:42,550 entonces tengo que obviamente darle esa fecha que desea en un formato determinado, 377 00:22:42,550 --> 00:22:46,030 y B, que me va a decir exactamente lo que va a dar a mí. 378 00:22:46,030 --> 00:22:48,590 Le digo que voy a regresar este objeto JSON, 379 00:22:48,590 --> 00:22:50,960 o como usted puede ver, hay diferentes formatos. 380 00:22:50,960 --> 00:22:54,050 >> También puede devolver los datos como un archivo CSV, por ejemplo. 381 00:22:54,050 --> 00:22:57,620 Pero usted sabe exactamente cómo esa información se va a ver cuando te lo devuelve 382 00:22:57,620 --> 00:23:00,610 así que usted puede esperar para hacer ciertas cosas con ella. 383 00:23:00,610 --> 00:23:07,240 Nos puede desplazarse hacia abajo y ver, por ejemplo, si desea consultar la API 384 00:23:07,240 --> 00:23:11,500 para obtener un calendario, entonces podemos utilizar esta URL en particular 385 00:23:11,500 --> 00:23:16,480 y le dan ciertos parámetros que van a ser los datos que queremos exactamente. 386 00:23:16,480 --> 00:23:19,540 Y del mismo modo, si queremos que los datos de nuevo en un formato determinado, 387 00:23:19,540 --> 00:23:23,790 entonces podemos hacer para mostrar los datos en un archivo CSV, 388 00:23:23,790 --> 00:23:27,700 y eso es otro parámetro que estamos pasando a la API. 389 00:23:27,700 --> 00:23:29,210 Un montón de cosas interesantes que hacer allí. 390 00:23:29,210 --> 00:23:32,550 Sin duda recomendamos que visites las API CS50. 391 00:23:32,550 --> 00:23:36,000 >> Voy a mirar a esta API Alimentos de Harvard, en particular para un poco. 392 00:23:36,000 --> 00:23:39,870 Una cosa que he hecho es diseñado este sitio web Harvard Noms, 393 00:23:39,870 --> 00:23:44,930 que utiliza la API Comida CS50 para recuperar el menú HUDS para el día. 394 00:23:44,930 --> 00:23:50,400 Y para la gente de escuela de extensión, HUDS es el servicio de comedor en Harvard. 395 00:23:50,400 --> 00:23:55,130 Lo que se obtiene es esta página que contiene todas las comidas del día, así que vemos el almuerzo. 396 00:23:55,130 --> 00:23:58,130 Tenemos unas categorías diferentes. Tenemos el frijol y la estación de grano entero. 397 00:23:58,130 --> 00:24:00,340 Tenemos la estación arroz integral. 398 00:24:00,340 --> 00:24:03,360 Podemos ver que tenemos para el brunch estos alimentos pocos. 399 00:24:03,360 --> 00:24:07,030 Si hacemos clic sobre ellos, entonces obtenemos la información nutricional. 400 00:24:07,030 --> 00:24:12,240 Usted ve esta es la información nutricional de pomelo, en caso de que se preguntan. 401 00:24:12,240 --> 00:24:14,870 Y así, una vez más, vamos a mirar en la parte de atrás aquí un poco 402 00:24:14,870 --> 00:24:18,530 y ver exactamente qué está haciendo esto para obtener estos datos. 403 00:24:18,530 --> 00:24:21,710 Y resulta que en realidad no ser muy complejo en absoluto. 404 00:24:21,710 --> 00:24:28,720 Este archivo se ve un poco desordenado, pero tenga en cuenta que este es el manejo de todo el sitio web, 405 00:24:28,720 --> 00:24:34,130 y si me desplazo hacia abajo vemos esta función de cambio de datos. 406 00:24:34,130 --> 00:24:36,630 >> Ahora, sólo para que quede claro, esto está escrito en CoffeeScript, 407 00:24:36,630 --> 00:24:39,570 que es un lenguaje que es probable que no haya visto antes. 408 00:24:39,570 --> 00:24:44,810 Pero es muy fácil de leer, así que voy a caminar a través de él como si se tratara de pseudocódigo. 409 00:24:44,810 --> 00:24:49,080 Fecha de cambio es una función que va a tomar en este valor de fecha, 410 00:24:49,080 --> 00:24:51,740 y también se va a tomar en un principio, lo que no les importa tanto. 411 00:24:51,740 --> 00:24:54,110 Pero lo importante es que tiene esta fecha, 412 00:24:54,110 --> 00:25:00,080 y esa fecha es el día que queremos pedir a todos los artículos de comida para. 413 00:25:00,080 --> 00:25:04,030 Y luego ves que tenemos un poco de sintaxis aquí, 414 00:25:04,030 --> 00:25:09,000 que es básicamente analizar esa fecha en un formato legible. 415 00:25:09,000 --> 00:25:11,920 En otras palabras, la API requiere la fecha en un formato determinado. 416 00:25:11,920 --> 00:25:17,390 No se puede decir 16 de noviembre 2012 AD. 417 00:25:17,390 --> 00:25:20,320 No va a saber qué hacer con eso. Quiere la fecha en un formato específico. 418 00:25:20,320 --> 00:25:23,230 Todo lo que estamos haciendo aquí es lo que da exactamente ese formato, 419 00:25:23,230 --> 00:25:26,520 que es un valor año y luego un guión, un valor meses, 420 00:25:26,520 --> 00:25:29,420 otro guión y el valor de fecha. 421 00:25:29,420 --> 00:25:34,910 Y también decimos que queremos que los datos sean salidas en JSON. 422 00:25:34,910 --> 00:25:37,560 >> Ahora estamos haciendo esta petición AJAX, y como he mencionado antes, 423 00:25:37,560 --> 00:25:41,680 jQuery tiene esta función super útil AJAX que todo lo que tiene que hacer es especificar 424 00:25:41,680 --> 00:25:45,780 algunos parámetros abajo aquí, y le va a devolver exactamente lo que quieres. 425 00:25:45,780 --> 00:25:50,490 Lo estamos diciendo que la dirección que quiere que vaya a esta API es comida CS50, 426 00:25:50,490 --> 00:25:52,270 que nos dieron de la especificación. 427 00:25:52,270 --> 00:25:56,730 Decimos que queremos que los datos en JSON y que 428 00:25:56,730 --> 00:25:59,490 vamos a dar estos datos que hemos definido aquí. 429 00:25:59,490 --> 00:26:02,670 Este es el día que queremos que los alimentos para. 430 00:26:02,670 --> 00:26:07,790 Y entonces todo lo que tienes que hacer es definir algún tipo de función éxito, 431 00:26:07,790 --> 00:26:11,980 que es básicamente lo que sucede cuando la API devuelve los datos. 432 00:26:11,980 --> 00:26:15,490 En otras palabras, hemos empaquetado de todos los parámetros que queramos, 433 00:26:15,490 --> 00:26:20,530 que en este caso es el día en que lo queremos y el hecho de que la queremos en JSON, 434 00:26:20,530 --> 00:26:23,840 y lo envió a la API, por lo que ahora la API está diciendo, está bien, 435 00:26:23,840 --> 00:26:26,350 Aquí está su información, lo tengo de nuevo para usted. 436 00:26:26,350 --> 00:26:29,930 Tenemos éxito de la función, dado que significa que la API 437 00:26:29,930 --> 00:26:32,230 con éxito devuelve algunos datos, ¿qué hacemos con él? 438 00:26:32,230 --> 00:26:35,980 >> Y resulta que lo único que hacen es llamar a esta función del menú de actualización 439 00:26:35,980 --> 00:26:42,680 con lo que la API ha regresado, por lo que podemos buscar esa 440 00:26:42,680 --> 00:26:47,970 y ver que todo lo que estamos haciendo es usar un montón de nueva sintaxis aquí 441 00:26:47,970 --> 00:26:52,220 para actualizar el código HTML e insertar estos nuevos datos. 442 00:26:52,220 --> 00:26:56,580 Lo que esto permite es que tenemos estas flechas a cada lado, y hacemos clic puede, 443 00:26:56,580 --> 00:27:01,060 y ahora estamos viendo los datos para el día siguiente y de nuevo para el día siguiente, 444 00:27:01,060 --> 00:27:04,820 y cada vez que se actualiza el valor de fecha y la consulta de la API, 445 00:27:04,820 --> 00:27:07,510 volver a estar algunos datos y ponerla en el sitio. 446 00:27:07,510 --> 00:27:10,590 Una vez más, se puede ver, super, super útil. 447 00:27:10,590 --> 00:27:14,410 Esta aplicación me tomó un par de horas para hackear juntos, 448 00:27:14,410 --> 00:27:20,140 y tengo la experiencia un poco más, por supuesto, pero su proyecto final CS50 449 00:27:20,140 --> 00:27:22,870 Puede ser algo muy parecido a esto. 450 00:27:22,870 --> 00:27:29,540 >> APIs son súper potente para la cantidad de esfuerzo que se toman. 451 00:27:29,540 --> 00:27:32,800 Lo último que voy a ir otra vez es una API de poco más amplia. 452 00:27:32,800 --> 00:27:35,480 No voy a llegar tan lejos en la medida de lo qué hacen concretamente, 453 00:27:35,480 --> 00:27:38,740 pero te voy a dar una idea de lo que hay ahí fuera. 454 00:27:38,740 --> 00:27:42,700 2 los realmente útiles, si usted está interesado en el análisis de datos o la visualización 455 00:27:42,700 --> 00:27:45,960 o algo por el estilo, son Freebase y Wikipedia. 456 00:27:45,960 --> 00:27:49,800 Wikipedia-presumiblemente todos ustedes saben, es una enciclopedia en línea libre, 457 00:27:49,800 --> 00:27:53,230 y que en realidad tiene una API, por lo que si lo desea, por ejemplo, 458 00:27:53,230 --> 00:27:56,250 obtener todos los textos y los artículos para el pulpo 459 00:27:56,250 --> 00:27:58,030 usted puede fácilmente hacer eso. 460 00:27:58,030 --> 00:28:02,300 Sólo decir hey, Wikipedia API, me gustaría que los datos devueltos como éste, 461 00:28:02,300 --> 00:28:07,010 y me gustaría que en este formato, y el artículo que me gustaría es pulpo, 462 00:28:07,010 --> 00:28:09,820 y muy pronto se le va a devolver esa información. 463 00:28:09,820 --> 00:28:12,230 Eso puede ser muy útil si desea hacer algún tipo de sitio 464 00:28:12,230 --> 00:28:16,200 eso es un visor mejor para Wikipedia o algo por el estilo. 465 00:28:16,200 --> 00:28:21,350 >> Freebase es una especie de parecido, aunque es un poco más difícil en cuanto a API. 466 00:28:21,350 --> 00:28:24,390 Freebase es como la Wikipedia en que es una enciclopedia en línea 467 00:28:24,390 --> 00:28:29,050 que contiene montones y montones de diferentes datos sobre todo tipo de temas diferentes, 468 00:28:29,050 --> 00:28:33,150 pero se almacena en una base de datos relacional, que es ligeramente diferente de la Wikipedia. 469 00:28:33,150 --> 00:28:36,410 Wikipedia tiene sus artículos y objetos vinculados a otros artículos, 470 00:28:36,410 --> 00:28:38,860 pero en su mayor parte, si desea que los datos de pulpo, 471 00:28:38,860 --> 00:28:41,990 vas al artículo pulpo, obtener esos datos, y usted tiene un montón de texto 472 00:28:41,990 --> 00:28:43,830 acerca de los pulpos, y eso es genial. 473 00:28:43,830 --> 00:28:46,870 Freebase funciona de una manera ligeramente más complicado que en 474 00:28:46,870 --> 00:28:48,930 todo lo que está relacionado con uno otro. 475 00:28:48,930 --> 00:28:52,620 En otras palabras, si estamos en busca de pulpo 476 00:28:52,620 --> 00:28:54,940 entonces tiene un montón de categorías asociadas con ella. 477 00:28:54,940 --> 00:28:57,920 >> Por ejemplo, es un animal que vive bajo el agua, 478 00:28:57,920 --> 00:28:59,710 que tiene una temperatura corporal determinada. 479 00:28:59,710 --> 00:29:01,210 No se. 480 00:29:01,210 --> 00:29:04,230 Y todas estas categorías son enlaces a otros sitios donde se puede ir 481 00:29:04,230 --> 00:29:06,640 a ver las cosas con esa misma categoría. 482 00:29:06,640 --> 00:29:13,450 En otras palabras, el conjunto de pulpo datos contendría un enlace a los datos establecidos para todos los animales, 483 00:29:13,450 --> 00:29:16,790 y que me dejaba moverse en la base de datos muy rápido. 484 00:29:16,790 --> 00:29:21,740 Esto puede ser muy útil si usted está haciendo algo así como comparaciones. 485 00:29:21,740 --> 00:29:24,490 En otras palabras, dada una cierta cosa, te quiero ver 486 00:29:24,490 --> 00:29:27,890 ¿qué más se relaciona con y ver qué más no está relacionado con. 487 00:29:27,890 --> 00:29:30,700 Ese tipo de cosas. Puede ser útil en un número de maneras. 488 00:29:30,700 --> 00:29:34,250 Si usted está buscando algo más que un reto y ser capaces de hacer cosas más complejas 489 00:29:34,250 --> 00:29:38,740 Yo consideraría echar un vistazo a la API de Freebase. 490 00:29:38,740 --> 00:29:44,670 Sin embargo, en gran parte, Wikipedia es un lugar muy sencillo de llegar tan lejos como la obtención de información. 491 00:29:44,670 --> 00:29:48,340 Otro lugar que voy a mirar es Last.fm, y de hecho voy a ir al sitio 492 00:29:48,340 --> 00:29:53,800 en caso de que algunas personas no están familiarizados, pero Last.fm es básicamente una música 493 00:29:53,800 --> 00:29:57,220 gustos y el sitio web recomendaciones. 494 00:29:57,220 --> 00:29:59,000 Usted puede hacer una cuenta. 495 00:29:59,000 --> 00:30:04,250 Usted puede comenzar a subir música desde su reproductor de música 496 00:30:04,250 --> 00:30:08,020 el sitio web, y básicamente comenzará a darle recomendaciones de música 497 00:30:08,020 --> 00:30:10,030 en base a lo que escuchas. 498 00:30:10,030 --> 00:30:14,270 >> Por ejemplo, si usted va a su página de perfil-esto es mío- 499 00:30:14,270 --> 00:30:18,180 se puede ver que tienen una lista de poco escuché a pistas. 500 00:30:18,180 --> 00:30:22,550 Se puede ver en general artistas favoritos, todas esas cosas, 501 00:30:22,550 --> 00:30:25,280 y de nuevo, hay una API grande detrás de Last.fm, 502 00:30:25,280 --> 00:30:29,360  y se puede utilizar para hacer montones y montones de cosas muy interesantes. 503 00:30:29,360 --> 00:30:38,870 Por ejemplo, voy a ir a la página de un amigo que tiene este sitio web Last.fm herramientas. 504 00:30:38,870 --> 00:30:42,380 Esto es en realidad otra plataforma que se construye en la API de Last.fm, 505 00:30:42,380 --> 00:30:45,420 y que hace una serie de bonitas cosas interesantes. 506 00:30:45,420 --> 00:30:50,260 Si me conecto con mi nombre de usuario, por ejemplo, 507 00:30:50,260 --> 00:30:53,110 Lo puedo hacer para generar una nube de etiquetas, por ejemplo, 508 00:30:53,110 --> 00:30:56,480 y lo que va a hacer es darme de nuevo una imagen de 509 00:30:56,480 --> 00:30:59,850 todos los diferentes géneros y ese tipo de cosas que me gusta escuchar. 510 00:30:59,850 --> 00:31:01,410 ¿Cómo se hace esto? 511 00:31:01,410 --> 00:31:05,670 Muy básicamente está diciendo a la API de Last.fm aquí está este usuario. 512 00:31:05,670 --> 00:31:10,710 Me gustaría saber el género de cada canción que he escuchado, 513 00:31:10,710 --> 00:31:15,130 y usted puede hacer que al hacer una llamada AJAX bastante simple a la API de Last.fm. 514 00:31:15,130 --> 00:31:18,990 Vas a obtener una lista grande, y entonces, evidentemente, algunas otras cosas que se está haciendo 515 00:31:18,990 --> 00:31:22,280 para convertirla en una nube de palabras, pero se puede ver en general 516 00:31:22,280 --> 00:31:25,850 que es muy fácil de acceder y muy fácil de usar. 517 00:31:25,850 --> 00:31:30,750 Muy bonito para una serie de cosas. 518 00:31:30,750 --> 00:31:35,940 >> Creo que eso es todo lo que diré en general. 519 00:31:35,940 --> 00:31:39,040 Una última cosa que voy a mencionar acerca de las API en general es que 520 00:31:39,040 --> 00:31:41,840 a veces se encontrará con algo que se llama limitación de velocidad, 521 00:31:41,840 --> 00:31:44,940 y la idea de la limitación de velocidad es que no quiero abusar de APIs. 522 00:31:44,940 --> 00:31:48,130 En otras palabras, es muy bueno que muchos de estos sitios web tienen APIs 523 00:31:48,130 --> 00:31:51,070 que usted puede ir y usar de forma gratuita. 524 00:31:51,070 --> 00:31:54,460 Sin embargo, si usted está haciendo millones o miles de millones de peticiones al día, 525 00:31:54,460 --> 00:31:57,610 por ejemplo, si usted está atascado en un bucle infinito que está infinitamente consulta 526 00:31:57,610 --> 00:32:00,680 algún tipo de API y volver a una enorme cantidad de datos, 527 00:32:00,680 --> 00:32:04,570 obviamente eso no es bueno, así que lo que mucha APIs hacer es tener esta característica limitante de la velocidad 528 00:32:04,570 --> 00:32:09,970 que dice que usted sólo puede hacer 1.000 solicitudes por día por dirección IP o algo por el estilo. 529 00:32:09,970 --> 00:32:12,540 Y si usted está haciendo un montón de pruebas y ese tipo de cosas, 530 00:32:12,540 --> 00:32:14,890 que a veces se quedará en eso, y de repente se le apaga 531 00:32:14,890 --> 00:32:18,280 y dicen que no, yo no voy a dar más datos. 532 00:32:18,280 --> 00:32:20,000 >> Lo que quiero hacer es jugar con las reglas. 533 00:32:20,000 --> 00:32:22,950 Usted quiere asegurarse de que usted lea la especificación API cuidadosamente. 534 00:32:22,950 --> 00:32:26,330 Si tiene ciertas reglas que se le atribuye, como sólo se puede hacer consultas por día X 535 00:32:26,330 --> 00:32:30,000 o que sólo se puede acceder a una parte de la base de datos de un cierto número de veces 536 00:32:30,000 --> 00:32:32,900 o algo por el estilo que usted quiere asegurarse de que se adhieren a eso. 537 00:32:32,900 --> 00:32:38,360 Mientras juegas dentro de esas reglas es probable que tenga un muy buen tiempo usando APIs. 538 00:32:38,360 --> 00:32:42,030 Su takeaway general es APIs son muy, muy útil. 539 00:32:42,030 --> 00:32:45,610 >> Hay una API para casi cualquier servicio web grande que hay. 540 00:32:45,610 --> 00:32:50,700 Casi cualquier parte de la suite de herramientas de Google, Google Maps, Google Earth, 541 00:32:50,700 --> 00:32:54,390 Gmail, Google Calendar, todas esas cosas tienen APIs. 542 00:32:54,390 --> 00:32:58,280 Usted las puede utilizar para ambos Obtener datos desde el servidor y enviar datos al servidor. 543 00:32:58,280 --> 00:33:00,870 En otras palabras, si usted quiere hacer una aplicación de calendario que puede actualizar 544 00:33:00,870 --> 00:33:04,190 Calendario de alguien Google, hay una API para eso. 545 00:33:04,190 --> 00:33:07,810 Si quieres hacer algo que te va a decir dónde 546 00:33:07,810 --> 00:33:12,530 la ubicación de una dirección específica es que se puede utilizar la API de Google Maps para eso. 547 00:33:12,530 --> 00:33:15,860 APIs son increíblemente útiles, y están por todas partes. 548 00:33:15,860 --> 00:33:18,700 Si estás interesado en algún tipo de idea, 549 00:33:18,700 --> 00:33:22,170 es probable que haya una API relacionada que puede utilizar para obtener una gran cantidad de datos 550 00:33:22,170 --> 00:33:25,060 muy rápidamente y muy simplemente. 551 00:33:25,060 --> 00:33:28,140 >> Si usted todavía está buscando un proyecto o si lo que desea es jugar 552 00:33:28,140 --> 00:33:31,820 con algo en general, las API son definitivamente vale la pena. 553 00:33:31,820 --> 00:33:37,200 Gracias, y estoy encantado de responder a cualquier pregunta que ustedes puedan tener. 554 00:33:37,200 --> 00:33:44,900 Bueno, muchas gracias. 555 00:33:44,900 --> 00:33:48,000 [CS50.TV]