[Powered by Google Translate] [Seminario] [Introducción de un programador a las API] [Billy Janitsch] [Harvard University] [Tommy MacWilliam] [Esta es CS50.] [CS50.TV] Hola a todos, soy Billy, y hoy voy a hablar de las API, o interfaces de programación de aplicaciones, específicamente en el contexto de los proyectos finales CS50 y ese tipo de cosas. En general lo que es un API? En términos muy generales, es una especie de intermediario que permite 2 piezas de software para comunicarse entre sí. Eso es una especie de definición muy amplia y no es tan relevante para lo que estamos viendo. Lo que realmente queremos es una especie de término medio útil para comunicarse con algún tipo de base de datos en algún lugar. Aquí está un gráfico, y, básicamente, es la idea de que Somos una aplicación, y queremos obtener datos de una base de datos, pero no queremos para consultar la base de datos directamente. En su lugar, quieren pasar por este tipo de intermediario, la API. La idea detrás de esto es los números 2 y 3 de la tabla son a la vez va a ser muy complicado y desordenado. En otras palabras, cuando la API se consulta la base de datos, probablemente va a estar usando tablas SQL y todo ese tipo de cosas, y hemos aprendido un poco sobre ello en CS50, pero en general, te has dado cuenta de que es un poco de dolor. Se pone muy, muy complicado y confuso, especialmente cuando usted está haciendo consultas complejas y ese tipo de cosas. Lo que realmente queremos es una especie de forma útil y sencilla para obtener esos datos, y esa es la idea detrás de los números 1 y 4 de la tabla. En otras palabras, queremos una manera muy sencilla de decirle a la API de qué conseguir para nosotros y una forma muy sencilla de obtener esos datos. Hay un camino principal que los datos que se envían y se reciben por lo general, que es JSON o JavaScript Object Notation. Eso puede variar un poco en cuanto a la forma de enviar la solicitud a la API. En otras palabras, si quieres algo de cierta cantidad de datos, cómo decirle la API para obtener esos datos puede variar un poco. Por lo general, implica la realización de algún tipo de solicitud de red. En otras palabras, el acceso a algún tipo de URL que va a decir la API exactamente lo que quiere, pero los datos son casi siempre se envían de vuelta, en otras palabras, el número 4 en JSON. ¿Qué es JSON exactamente? Como he dicho, JavaScript Object Notation. Es básicamente el estándar universal para la transmisión y recepción de datos. La idea es que usted tiene estas tres categorías de cosas. Usted tiene arrays, HashMaps, y primitivas. Matrices y HashMaps te he mirado un poco en CS50, pero has conseguido una especie de sentido muy estricto de lo que son. En otras palabras, con arreglos que saben que están escriba encuadernado, por lo que sólo tienen una clase de tipo que va a lo largo de toda la matriz. JSON es mucho más indulgente con ese tipo de cosas. Básicamente, la idea es que la construcción de este objeto, que puede estar compuesto de cualquiera de estas 3 cosas y puede estar compuesto por los múltiples de ellos, y pueden estar anidados. Aquí hay una especie de ejemplo de JSON, que son estas llaves aquí representan el HashMap, y un HashMap es básicamente una asignación de algún tipo de clave a algún tipo de valor. Verás que aquí tenemos la clave de propiedades, y eso es mapear en una matriz, que es todo esto. Vemos otro elemento del HashMap, que es este isAwesome clave, que se asigna a un valor simple verdad, es decir, un booleano. Las primitivas pueden ser cadenas. Ellos pueden ser números enteros. Pueden ser Bools, nada de eso. Y ver el contenido de esta matriz que apunta a propiedades tiene 2 cadenas en el mismo, auto-similar y maravilloso. Esas son dos propiedades de JSON, y vemos que JSON es impresionante. Para ver que un poco más de cerca que voy a construir un ejemplo más complejo de JSON aquí. Vamos a empezar con una matriz, por ejemplo, sólo una matriz vacía. Pero eso es una especie de aburrido, así que vamos a llenarlo un poco, y como he dicho, las matrices en JSON se escribe unido, lo que también podría tener una cadena de aquí, que es hi, y ese es otro elemento de esa matriz. Y del mismo modo, podríamos añadir una hashmapping aquí, que va a tener unas pocas asignaciones. Va a tener una asignación de nombre a la cadena de Billy. Contamos con una asignación de nombre a Billy, y tenemos un mapeo de color favorito el azul. Eso es, básicamente, un buen ejemplo de JSON. En cierto modo se consigue en-gritos, necesitan una coma allí, todas las diferentes partes del mismo. Una vez más, no está obligado a escribir todo lo que puede tener cualquier clase de tipos dentro de lo que quieras, y la idea es que es auto-similar. En otras palabras, esto de aquí es un objeto JSON, como es toda esta cosa, como es esto, lo que puede tener un primitivo ser un objeto, una matriz ser un objeto o un HashMap ser un objeto. Como se puede ver de clase, JSON es muy, muy útil, ya que es muy versátil. Usted puede tener todos los datos posibles que se pueden concebir almacenados en JSON. Eso hace que sea un lenguaje realmente agradable de usar con las API porque más o menos significa que no importa lo que los datos que desea que va a haber alguna manera de ponerlo de nuevo en JSON. A pocas propiedades que hacen JSON especialmente bueno para este tipo de cosas. Como se puede ver, en comparación con un montón de cosas que usted ha estado trabajando en CS50 es relativamente muy fácil de leer y también muy fácil de escribir. Puede guión si lo desea, como si estuviera haciendo en ese ejemplo, que le da una buena versión, bastante que se puede ver muy bien. Pero, por otra parte, también es fácil de leer y escribir para un ordenador. En otras palabras, es fácil de analizar y fácil de codificar, lo que significa que es bastante rápido en cuanto a la lectura de los datos se refiere, y JSON se puede generar muy rápidamente. También es muy fácil de acceder a las diferentes partes de JSON y ese tipo de cosas. Eso está muy bien, y además, el hecho de que es auto-similar en otras palabras, el hecho de que se puede tener dentro de JSON JSON JSON dentro es muy agradable para el almacenamiento de datos. Otra parte que generalmente es muy útil en el trabajo con las API es jQuery. Usted ha aprendido un poco de JavaScript, que es una buena manera de para manipular HTML y CSS dentro de un sitio web. Pero puede clase de ser un dolor de código en JavaScript sin formato, en gran parte porque JavaScript es un lenguaje muy detallado. Usted tiene que aprender mucho de la sintaxis, y sólo para hacer cosas muy simples se necesita una gran cantidad de código, por lo que jQuery es una biblioteca de JavaScript. En otras palabras, se trata de un archivo JavaScript que puede cargar y luego usar las funciones de jQuery para hacer ciertas cosas. Y jQuery básicamente hace la vida mucho más fácil. Simplifica lo tomaría cientos de líneas en JavaScript a unas pocas líneas en jQuery. Es especialmente útil si usted está utilizando las API, ya que generalmente cómo se va a acceder API es haciendo peticiones AJAX, y creo que David se ha mencionado en la conferencia que las solicitudes de AJAX son por lo general cuando usted está haciendo una solicitud de red a algún tipo de servidor y volver a algún tipo de datos y la actualización de una página instantáneamente. Mientras que en JavaScript sin formato que llevaría el número de líneas locas para validar todos los encabezados y hacer todas esas cosas, jQuery tiene una función muy simple llamado AJAX, y todo lo que tiene que hacer en AJAX es dar a los parámetros que se quieren dar a la API, la ubicación de la API y cualquier tipo adicional de opciones que desee configurar. Es muy, muy bueno y muy útil para este tipo de cosas. Eso es todo lo que necesitamos para empezar a recibir nuestras manos sucias en la API. Voy a traer a colación algunos ejemplos y explorar sus diferentes propiedades y por qué son útiles para diferentes tipos de cosas. La primera cosa que realmente voy a mostrar es algo que estoy trabajando en en mi laboratorio de investigación, que es un visor de Ngram, y, básicamente, la idea de un Visor Ngram se puede buscar algún tipo de palabra o frase y ver con qué frecuencia se apareció en un cierto conjunto de texto en el tiempo. Este ejemplo es este conjunto de datos de los bebés que nacieron en Nueva York entre 1920 y 2000. Podemos buscar, por ejemplo, para el nombre de Jennifer, y vemos que antes de 1960 en realidad no se utilizó casi nada, y luego como nos metemos en los últimos años se está volviendo cada vez más utilizada. También podemos hacer comparaciones, por lo que si comparamos a Jennifer, por ejemplo, Thomas, podemos ver Thomas ha sido bastante frecuente a lo largo de la historia, mientras que Jennifer es un nombre más reciente. Podemos hacer ese tipo de cosas. ¿Cómo funciona esta aplicación? Básicamente, funciona a través de una API. En otras palabras, tenemos ciertos parámetros aquí. Contamos con los parámetros de lo que en realidad estamos buscando, ¿cuáles son esos nombres, y luego tenemos el inmueble algunos otros, como el eje Y y el eje X. Usted puede ver que tenemos algunas opciones diferentes en cuanto a la tiempo de resolución a utilizar y ese tipo de cosas. Tenemos estas opciones en cuanto a los datos que realmente queremos de la base de datos, y queremos obtener esos datos de alguna manera útil. Por lo general, si se consulta la base de datos directamente sería una especie de ser un dolor para hacer presumiblemente porque estos datos acerca de los nombres del bebé vive en alguna base de datos en alguna parte, y sería realmente complicado tener que consultar manualmente y decidir exactamente qué datos para volver. En otras palabras, sólo se preocupan por Jennifer y Thomas en este caso, y sólo se preocupan en un determinado eje y todas esas cosas. ¿Cómo podemos evitar esto? Para profundizar en esta API un poco más te voy a mostrar otro ejemplo de esta plataforma que utiliza un conjunto de datos ligeramente diferente. Este conjunto de datos, en lugar de ser los nombres del bebé, es en realidad la totalidad imprimir datos de publicaciones de la Biblioteca Abierta, que es una fuente gigante de textos publicados a lo largo de los últimos 100 años más o menos. La idea es que tenemos esta compository de millones y millones de textos, que ahora podemos buscar palabras y frases diferentes pulg He aquí un ejemplo que varía un poco diferente del ejemplo anterior Te mostré, que es que tenemos estos 3 consultas de búsqueda, la guerra, la guerra y la palabra francesa para la guerra, que es guerre. Y estamos buscando dentro de los 3 diferentes secciones de la base de datos total. En otras palabras, en esta primera consulta, nosotros solo estamos buscando en los EE.UU., en el segundo, sólo en el Reino Unido, y el tercero sólo de las obras publicadas en Francia. Vemos algunos patrones interesantes. Por ejemplo, vemos a la vuelta de aquí que- Vaya, se me estropeó el eje un poco, pero se puede ver a la derecha en este rango aquí en torno a la Guerra Civil hay un gran repunte en la edición americana pero no un gran repunte en los otros dos, y eso es obviamente porque la Guerra Civil que estaba sucediendo en ese momento. Podemos ver algunas cosas interesantes allí, pero lo que realmente importa es cómo llegamos a estos datos. Te llevaré detrás de las escenas de esta aplicación en un poco. Un buen truco es que si usted está trabajando con el sitio y el tipo de quieren saber lo que pasa detrás de las escenas, puede abrir las herramientas de desarrollo. Voy a estar utilizando herramientas de Chrome para desarrolladores, y para llegar a los usted puede hacer el control, shift, J, y que te lleva a la consola de JavaScript. Hay algunas fichas aquí. Todos ellos pueden ser muy útiles en diferentes circunstancias, pero me preocupo por la red ficha en este momento, y que en realidad tiene que actualizar para conseguir ese trabajo. Oh, lo siento. Le gusta dar un ejemplo al azar. Bueno, vamos a utilizar este ejemplo entonces. La idea es que hay aquí esta API, y usted puede ver exactamente lo que la API está regresando. Esto es lo que la aplicación está a la vuelta de la API de haber enviado la solicitud. Permítanme ampliar un poco, y que, básicamente, puede ver que es sólo una serie de pares de valores clave en JSON. En otras palabras, tenemos este HashMap aquí que la asignación de valores. En otras palabras, es la cartografía años a valores. En 1765, cualquier palabra que inicialmente buscado se usa 90 veces de 1 millón, así que estamos volviendo a este resultado. No es exactamente JSON ya que tenemos esta cabecera resultado poco aquí, pero observe que este objeto entero aquí es sólo una gran mancha grande JSON. Tenemos aquí una serie que contiene este elemento de su conjunto, y se puede ver que todo elemento termina allí, y luego tenemos otro gran elemento que va todo el camino hasta el final, y que termina aquí. Contamos con una amplia muy grande con 2 objetos en ella, y cada uno de esos objetos es un HashMap. Se puede ver en cada uno de esos HashMaps observa una asociación de este valor de índice 0 y el valor de este valor a otro HashMap, que a su vez es el mapeo de valores del eje X con los valores del eje Y. Usted puede ver JSON pone un poco complicado, pero en general, en realidad es muy útil, y es muy fácil de acceder en comparación con otros diferentes formas de notación. En cuanto a lo que en realidad estamos enviando datos a la API para obtener, Voy a entrar en la parte de atrás un poco aquí. Este es el gran archivo JavaScript que está manejando todas las interacciones de la aplicación web, por lo que no les importa la mayor parte de esto, pero nos preocupamos por parte de ella. Por ejemplo, nos preocupamos por esta función BuildQuery, y la idea de esta función es básicamente lo que está buscando alrededor de la página, averiguar lo que el usuario desea consultar, en otras palabras, la comprobación de las cajas donde han aportes de sus términos de búsqueda, comprobación de los diferentes valores Y y del eje X que han elegido y todo ese tipo de cosas, y que va a escupir este valor de la consulta, que luego se puede enviar a la API. Esto parece complicado, y es complicado bastante pero lo que voy a hacer, de hecho, ya estoy haciendo esto, que es gran- es que me voy a poner la consola para imprimir exactamente ese valor consulta que está enviando fuera a la API. Eso es en realidad aquí mismo. Lo sentimos, imprime un montón de cosas. Pero esto es lo que nos importa, este objeto aquí. Este es el objeto de la consulta. En otras palabras, esto es exactamente lo que la aplicación web es el envío a la API, y así que vamos a ver dentro de un poco, y vemos que tenemos algunos valores aquí. Vemos que tenemos este tipo de conteo, que es ocurrencias por millón de palabras, que es exactamente lo que hemos elegido en el eje Y de aquí. Ahí es donde que viene. Tenemos un valor de base de datos, lo que significa que hay una base de datos determinada que estos datos se vive, y queremos acceder a esos datos específicamente en lugar de los nombres de bebé de datos, por ejemplo. Luego tenemos este valor grupos, que ya es decir que queremos buscar por año en comparación con cualquier otro valor X eje. Entonces tenemos un método, que algunas API hará varias cosas. En otras palabras, esta API también puede devolver otros tipos de datos, pero en este caso, queremos que el mapeo de valores del eje X con los valores del eje Y. Eso es lo que está diciendo que hacer allí, y tenemos esta matriz búsqueda límites, que contiene dos valores. El primero es lo que vemos aquí, que es de todos los valores contenida dentro de esa pequeña caja primero en la parte superior. En otras palabras, queremos buscar la palabra batalla, y queremos filtrar por textos en español dentro de la literatura americana. Tenemos este país, que es EE.UU.. Tenemos una lengua, que es el Inglés, así que tenemos todos estos diferentes partes que están diciendo la API exactamente lo que queremos. No sabemos cuáles son los datos que obtenemos de espalda es, sin embargo, pero sabemos que los datos se van a tomar una forma determinada. Este ejemplo es una especie de en el lado complicado, y no necesariamente sería el uso de una API este complejo, pero esto es mostrar el alcance y poder de lo que API puede hacer. En otras palabras, utilizando un sistema de consulta relativamente simple que básicamente tienen un cuadro de entrada con unos selectores de algunos otros en diferentes lugares. Permítanme amplía aquí. Tenemos un cuadro de entrada con una selección de metadatos diferentes pocas, y contamos con eje Y y el eje X selecciones. En realidad no tienen campos que muchos y podemos ver muy fácilmente que somos capaces de consultar algún tipo de API y obtener datos de vuelta y luego lo puso en esta tabla, que luego se va a mostrar de una manera útil. Para ver otro ejemplo que podría ser un poco más familiar para ustedes vamos a recurrir a Facebook. API de Facebook que se llama el Gráfico de Facebook, y, básicamente, lo que significa que es Facebook se ve como esta enorme base de datos de muchas partes diferentes que tienen todas las relaciones determinadas entre sí. En otras palabras, soy un usuario de Facebook, así que tengo un perfil, y también tengo algunos amigos, y cada uno de ellos tiene un perfil, y cada uno de mis amigos tiene un muro, que tiene diferentes comentarios sobre el mismo, y cada uno de esos comentarios tiene gustos y todas esas cosas. Hay un montón de partes diferentes a Facebook. Es una API enormemente complejo, y hay un montón que puedes hacer con él, pero en realidad es bastante fácil de usar. Voy a empezar por ir a graph.facebook.com / billyjanitsch, cual es mi nombre de cuenta única, y su nombre de cuenta será o bien algún tipo de palabra si lo ha elegido, o puede que solo sea una cadena de números. Lo que se obtiene es información bastante básica. Vemos que tengo un nombre, que es Billy, un apellido, que es Janitsch. Hay una única ID de Facebook que tengo. Se puede ver que soy hombre y que tengo mi configuración de idioma para Inglés británico. En otras palabras, estamos viendo una información muy básica aquí. No es demasiado, pero nos da una idea de lo que hay. Podemos hacer lo mismo con David Malan, por ejemplo. Creo que su nombre es dmalan. Vemos a David Malan tiene un identificador único. Él tiene un nombre, nombre de pila, segundo nombre, apellido. También vemos que es varón y tiene su conjunto de idiomas para EE.UU. Inglés. En otras palabras, estamos viendo bastante información básica aquí. Ahora, ¿qué pasa si tratamos de ver algo más? Digamos que yo estoy interesado en lo que David Malan ha gustado en Facebook. Que puedo hacer / talla. Ahora nos hemos encontrado con un problema. Tenemos una especie de error que dice que un testigo de acceso está obligado a solicitar este recurso. Pero si se piensa en ello, que en realidad tiene sentido porque sería raro si se puede acceder a cada parte de la base de datos de Facebook sólo a partir de algún tipo de API simple, ¿verdad? En otras palabras, es de suponer que su información no se puede acceder por cualquier persona que lo desee. Este error es precisamente lo que significa. Algunas API requieren ciertos permisos para acceder a sus datos. Y APIs aún más avanzada, como el Facebook uno, requerirá ciertos permisos para hacer ciertas cosas. Puedo ver esta información básica acerca de David Malan. Puedo ver que es masculino y que vive en los EE.UU., pero no puedo ver nada más allá de eso. Para evitar esto, por ahora, Facebook tiene esta buena herramienta que es la gráfica API explorador, y la idea de que se puede ordenar de compensar los permisos para ti mismo sobre la base de su propia cuenta a continuación, ver las cosas que específicamente su cuenta puede ver. Por ejemplo, si hago graph.facebook.com/billyjanitsch/likes- ¡Vaya, supongo que tengo que revalidar mi token aquí. Bien. Si lo hago de nuevo, genial, ahora veo que me sale este objeto de nuevo que dice que me gustan los fideos de la piscina, que se encuentran en la categoría Juegos y juguetes. Me gusta morsas, que están en la categoría de los Animales. Estos son mis gustos real Facebook. Son un poco embarazoso. Pero podemos ver todos estos datos se devuelven en JSON. Es muy fácil de leer. En otras palabras, tenemos esta asignación de datos de algún tipo de una matriz, y cada elemento de esta matriz es un HashMap que mapea el nombre de un producto y la categoría de un igual. Cada uno como tiene un identificador único. Hay todo tipo de cosas diferentes de datos que podemos obtener, y si usted está interesado en el uso de la API de Facebook para un proyecto final CS50 o algo como eso en realidad es bastante factible. Básicamente cómo moverse por la cosa de autenticación es Facebook utiliza un sistema llamado OAuth, o autenticación abierta, y yo no quiero entrar en eso ahora porque OAuth o los diferentes tipos de autenticación tiende a variar mucho entre diferentes APIs, por lo que podía pasar mucho tiempo revisando cada uno, pero en realidad son bastante auto-explicativo. Si Google API de Facebook es muy fácil de leer. Hay un conjunto de especificaciones. Por ejemplo, esta es la documentación de la API de Facebook, 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 que están disponibles para conseguir los datos de la medida de lo y también los diferentes permisos que necesito para poder acceder a ellos. Como hemos visto, no es necesario tener permisos para acceder al nombre o el género, pero más allá de que es preciso tener permisos para la mayoría de las cosas. Esta página, o mejor dicho, este sitio web también le dirá cómo llegar un símbolo de poder autenticarse. La mayoría de los sistemas de autenticación de utilizar algún tipo de señal donde se obtiene este valor único, que es una cadena muy larga y aleatoria, y de que manera se puede asociar a la solicitud que usted está haciendo con usted. En otras palabras, ellos saben que no estás haciendo nada sospechoso con sus datos. Ellos saben exactamente lo que está recibiendo. También saben que tienes permiso para ver esta información. Si ha realizado una aplicación de Facebook y su aplicación tiene ciertos usuarios, y los usuarios que han permitido aplicación para acceder a ciertas partes de su perfil, entonces cualquier cosa API clave o token que esa aplicación está utilizando será capaz de acceder a los datos para estos usuarios. Esto puede sonar complicado, pero no es tan malo, y si quieres usar Facebook Yo recomendaría que usted considerar jugar con su API. Es muy bueno, y usted puede hacer un montón de cosas diferentes a ella. Si el usuario le concede estos permisos puede incluso volver a la API y decir que quieres publicar en realidad a la pared del usuario, o quiero tenerlos publicar una foto, y por eso en su servicio de noticias que a veces tendrás esas cosas molestas diciendo que su amigo ha visto el video en algún sitio raro o algo por el estilo. Esto se debe a que la aplicación ha tenido acceso a publicar en el muro de esa persona. La idea general de la API de Facebook es bastante complicado, pero también es útil realmente. Definitivamente vale la pena visitar si usted todavía está buscando un proyecto final. Otro conjunto de APIs que me voy a ir otra vez es CS50 APIs. Permítanme hacer un zoom aquí. CS50 realidad ha reunido una serie de APIs que se puede utilizar para un proyecto final o simplemente para cualquier cosa que usted está haciendo. Y están en su mayoría relacionados con la Universidad de Harvard, y varían desde el menú HUDS, por ejemplo, a esta API Harvard Eventos, que le permitirá acceder a una lista de diferentes eventos que están sucediendo en Harvard y ese tipo de cosas. Y, entonces, puede hacer clic en cualquiera de estos y obtener una especificación para ello, que podrás encontrar para cualquier API, y es la idea le permite saber, A, específicamente lo que solicitar a la API y cómo solicitarla. En otras palabras, si desea que todos los eventos que están sucediendo mañana entonces tengo que obviamente darle esa fecha que desea en un formato determinado, y B, que me va a decir exactamente lo que va a dar a mí. Le digo que voy a regresar este objeto JSON, o como usted puede ver, hay diferentes formatos. También puede devolver los datos como un archivo CSV, por ejemplo. Pero usted sabe exactamente cómo esa información se va a ver cuando te lo devuelve así que usted puede esperar para hacer ciertas cosas con ella. Nos puede desplazarse hacia abajo y ver, por ejemplo, si desea consultar la API para obtener un calendario, entonces podemos utilizar esta URL en particular y le dan ciertos parámetros que van a ser los datos que queremos exactamente. Y del mismo modo, si queremos que los datos de nuevo en un formato determinado, entonces podemos hacer para mostrar los datos en un archivo CSV, y eso es otro parámetro que estamos pasando a la API. Un montón de cosas interesantes que hacer allí. Sin duda recomendamos que visites las API CS50. Voy a mirar a esta API Alimentos de Harvard, en particular para un poco. Una cosa que he hecho es diseñado este sitio web Harvard Noms, que utiliza la API Comida CS50 para recuperar el menú HUDS para el día. Y para la gente de escuela de extensión, HUDS es el servicio de comedor en Harvard. Lo que se obtiene es esta página que contiene todas las comidas del día, así que vemos el almuerzo. Tenemos unas categorías diferentes. Tenemos el frijol y la estación de grano entero. Tenemos la estación arroz integral. Podemos ver que tenemos para el brunch estos alimentos pocos. Si hacemos clic sobre ellos, entonces obtenemos la información nutricional. Usted ve esta es la información nutricional de pomelo, en caso de que se preguntan. Y así, una vez más, vamos a mirar en la parte de atrás aquí un poco y ver exactamente qué está haciendo esto para obtener estos datos. Y resulta que en realidad no ser muy complejo en absoluto. Este archivo se ve un poco desordenado, pero tenga en cuenta que este es el manejo de todo el sitio web, y si me desplazo hacia abajo vemos esta función de cambio de datos. Ahora, sólo para que quede claro, esto está escrito en CoffeeScript, que es un lenguaje que es probable que no haya visto antes. Pero es muy fácil de leer, así que voy a caminar a través de él como si se tratara de pseudocódigo. Fecha de cambio es una función que va a tomar en este valor de fecha, y también se va a tomar en un principio, lo que no les importa tanto. Pero lo importante es que tiene esta fecha, y esa fecha es el día que queremos pedir a todos los artículos de comida para. Y luego ves que tenemos un poco de sintaxis aquí, que es básicamente analizar esa fecha en un formato legible. En otras palabras, la API requiere la fecha en un formato determinado. No se puede decir 16 de noviembre 2012 AD. No va a saber qué hacer con eso. Quiere la fecha en un formato específico. Todo lo que estamos haciendo aquí es lo que da exactamente ese formato, que es un valor año y luego un guión, un valor meses, otro guión y el valor de fecha. Y también decimos que queremos que los datos sean salidas en JSON. Ahora estamos haciendo esta petición AJAX, y como he mencionado antes, jQuery tiene esta función super útil AJAX que todo lo que tiene que hacer es especificar algunos parámetros abajo aquí, y le va a devolver exactamente lo que quieres. Lo estamos diciendo que la dirección que quiere que vaya a esta API es comida CS50, que nos dieron de la especificación. Decimos que queremos que los datos en JSON y que vamos a dar estos datos que hemos definido aquí. Este es el día que queremos que los alimentos para. Y entonces todo lo que tienes que hacer es definir algún tipo de función éxito, que es básicamente lo que sucede cuando la API devuelve los datos. En otras palabras, hemos empaquetado de todos los parámetros que queramos, que en este caso es el día en que lo queremos y el hecho de que la queremos en JSON, y lo envió a la API, por lo que ahora la API está diciendo, está bien, Aquí está su información, lo tengo de nuevo para usted. Tenemos éxito de la función, dado que significa que la API con éxito devuelve algunos datos, ¿qué hacemos con él? Y resulta que lo único que hacen es llamar a esta función del menú de actualización con lo que la API ha regresado, por lo que podemos buscar esa y ver que todo lo que estamos haciendo es usar un montón de nueva sintaxis aquí para actualizar el código HTML e insertar estos nuevos datos. Lo que esto permite es que tenemos estas flechas a cada lado, y hacemos clic puede, y ahora estamos viendo los datos para el día siguiente y de nuevo para el día siguiente, y cada vez que se actualiza el valor de fecha y la consulta de la API, volver a estar algunos datos y ponerla en el sitio. Una vez más, se puede ver, super, super útil. Esta aplicación me tomó un par de horas para hackear juntos, y tengo la experiencia un poco más, por supuesto, pero su proyecto final CS50 Puede ser algo muy parecido a esto. APIs son súper potente para la cantidad de esfuerzo que se toman. Lo último que voy a ir otra vez es una API de poco más amplia. No voy a llegar tan lejos en la medida de lo qué hacen concretamente, pero te voy a dar una idea de lo que hay ahí fuera. 2 los realmente útiles, si usted está interesado en el análisis de datos o la visualización o algo por el estilo, son Freebase y Wikipedia. Wikipedia-presumiblemente todos ustedes saben, es una enciclopedia en línea libre, y que en realidad tiene una API, por lo que si lo desea, por ejemplo, obtener todos los textos y los artículos para el pulpo usted puede fácilmente hacer eso. Sólo decir hey, Wikipedia API, me gustaría que los datos devueltos como éste, y me gustaría que en este formato, y el artículo que me gustaría es pulpo, y muy pronto se le va a devolver esa información. Eso puede ser muy útil si desea hacer algún tipo de sitio eso es un visor mejor para Wikipedia o algo por el estilo. Freebase es una especie de parecido, aunque es un poco más difícil en cuanto a API. Freebase es como la Wikipedia en que es una enciclopedia en línea que contiene montones y montones de diferentes datos sobre todo tipo de temas diferentes, pero se almacena en una base de datos relacional, que es ligeramente diferente de la Wikipedia. Wikipedia tiene sus artículos y objetos vinculados a otros artículos, pero en su mayor parte, si desea que los datos de pulpo, vas al artículo pulpo, obtener esos datos, y usted tiene un montón de texto acerca de los pulpos, y eso es genial. Freebase funciona de una manera ligeramente más complicado que en todo lo que está relacionado con uno otro. En otras palabras, si estamos en busca de pulpo entonces tiene un montón de categorías asociadas con ella. Por ejemplo, es un animal que vive bajo el agua, que tiene una temperatura corporal determinada. No se. Y todas estas categorías son enlaces a otros sitios donde se puede ir a ver las cosas con esa misma categoría. En otras palabras, el conjunto de pulpo datos contendría un enlace a los datos establecidos para todos los animales, y que me dejaba moverse en la base de datos muy rápido. Esto puede ser muy útil si usted está haciendo algo así como comparaciones. En otras palabras, dada una cierta cosa, te quiero ver ¿qué más se relaciona con y ver qué más no está relacionado con. Ese tipo de cosas. Puede ser útil en un número de maneras. Si usted está buscando algo más que un reto y ser capaces de hacer cosas más complejas Yo consideraría echar un vistazo a la API de Freebase. Sin embargo, en gran parte, Wikipedia es un lugar muy sencillo de llegar tan lejos como la obtención de información. Otro lugar que voy a mirar es Last.fm, y de hecho voy a ir al sitio en caso de que algunas personas no están familiarizados, pero Last.fm es básicamente una música gustos y el sitio web recomendaciones. Usted puede hacer una cuenta. Usted puede comenzar a subir música desde su reproductor de música el sitio web, y básicamente comenzará a darle recomendaciones de música en base a lo que escuchas. Por ejemplo, si usted va a su página de perfil-esto es mío- se puede ver que tienen una lista de poco escuché a pistas. Se puede ver en general artistas favoritos, todas esas cosas, y de nuevo, hay una API grande detrás de Last.fm,  y se puede utilizar para hacer montones y montones de cosas muy interesantes. Por ejemplo, voy a ir a la página de un amigo que tiene este sitio web Last.fm herramientas. Esto es en realidad otra plataforma que se construye en la API de Last.fm, y que hace una serie de bonitas cosas interesantes. Si me conecto con mi nombre de usuario, por ejemplo, Lo puedo hacer para generar una nube de etiquetas, por ejemplo, y lo que va a hacer es darme de nuevo una imagen de todos los diferentes géneros y ese tipo de cosas que me gusta escuchar. ¿Cómo se hace esto? Muy básicamente está diciendo a la API de Last.fm aquí está este usuario. Me gustaría saber el género de cada canción que he escuchado, y usted puede hacer que al hacer una llamada AJAX bastante simple a la API de Last.fm. Vas a obtener una lista grande, y entonces, evidentemente, algunas otras cosas que se está haciendo para convertirla en una nube de palabras, pero se puede ver en general que es muy fácil de acceder y muy fácil de usar. Muy bonito para una serie de cosas. Creo que eso es todo lo que diré en general. Una última cosa que voy a mencionar acerca de las API en general es que a veces se encontrará con algo que se llama limitación de velocidad, y la idea de la limitación de velocidad es que no quiero abusar de APIs. En otras palabras, es muy bueno que muchos de estos sitios web tienen APIs que usted puede ir y usar de forma gratuita. Sin embargo, si usted está haciendo millones o miles de millones de peticiones al día, por ejemplo, si usted está atascado en un bucle infinito que está infinitamente consulta algún tipo de API y volver a una enorme cantidad de datos, obviamente eso no es bueno, así que lo que mucha APIs hacer es tener esta característica limitante de la velocidad que dice que usted sólo puede hacer 1.000 solicitudes por día por dirección IP o algo por el estilo. Y si usted está haciendo un montón de pruebas y ese tipo de cosas, que a veces se quedará en eso, y de repente se le apaga y dicen que no, yo no voy a dar más datos. Lo que quiero hacer es jugar con las reglas. Usted quiere asegurarse de que usted lea la especificación API cuidadosamente. Si tiene ciertas reglas que se le atribuye, como sólo se puede hacer consultas por día X o que sólo se puede acceder a una parte de la base de datos de un cierto número de veces o algo por el estilo que usted quiere asegurarse de que se adhieren a eso. Mientras juegas dentro de esas reglas es probable que tenga un muy buen tiempo usando APIs. Su takeaway general es APIs son muy, muy útil. Hay una API para casi cualquier servicio web grande que hay. Casi cualquier parte de la suite de herramientas de Google, Google Maps, Google Earth, Gmail, Google Calendar, todas esas cosas tienen APIs. Usted las puede utilizar para ambos Obtener datos desde el servidor y enviar datos al servidor. En otras palabras, si usted quiere hacer una aplicación de calendario que puede actualizar Calendario de alguien Google, hay una API para eso. Si quieres hacer algo que te va a decir dónde la ubicación de una dirección específica es que se puede utilizar la API de Google Maps para eso. APIs son increíblemente útiles, y están por todas partes. Si estás interesado en algún tipo de idea, es probable que haya una API relacionada que puede utilizar para obtener una gran cantidad de datos muy rápidamente y muy simplemente. Si usted todavía está buscando un proyecto o si lo que desea es jugar con algo en general, las API son definitivamente vale la pena. Gracias, y estoy encantado de responder a cualquier pregunta que ustedes puedan tener. Bueno, muchas gracias. [CS50.TV]