[Powered by Google Translate] [Seminario] [Introdución dun desenvolvedor de APIs] [Billy Janitsch] [Harvard University] [Tommy MacWilliam] [Esta é CS50.] [CS50.TV] Ola, todos, eu son o Billy, e hoxe eu vou estar fala de APIs, ou interfaces de programación de aplicacións, especialmente no contexto da CS50 proxectos finais e ese tipo de cousas. En xeral o que é unha API? En termos moi xerais, é unha especie de home de media que permite que dúas pezas de software para comunicarse uns cos outros. Isto é un tipo de definición moi ampla e non é tan relevante para o que estamos mirando. O que realmente queremos é unha especie de medio termo útil para comunicarse con algún tipo de base de datos nalgún lugar. Aquí está o gráfico, e, basicamente, a idea é que somos unha aplicación, e queremos obter datos a partir dun banco de datos, pero non desexa consultar o banco de datos directamente. En vez diso, quero pasar por este tipo de home medio, a API. A idea detrás diso é os números 2 e 3 do gráfico son ambos vai ser moi complicado e confuso. Noutras palabras, cando a API está consultando a base de datos, el probabelmente vai estar usando táboas SQL e todos este tipo de cousas, e aprendemos un pouco sobre iso no CS50, pero en xeral, entender que é un pouco de dor. El está moi, moi complicado e confuso, especialmente cando se está facendo consultas complexas e ese tipo de cousas. O que realmente queremos é algún tipo de forma útil e sinxelo para obter estes datos, e esa é a idea detrás de números 1 e 4 do gráfico. Noutras palabras, queremos un xeito moi sinxelo de dicir o que a API para obter a nós e un xeito realmente sinxelo de obter os datos de volta. Hai un xeito principal, que normalmente é de que os datos enviados e recibidos, que é JSON ou JavaScript Object Notation. Que pode variar un pouco, tanto como como enviar a solicitude para a API. Noutras palabras, se quere algunha certa cantidade de datos, como dicir a API para obter os datos poden variar un pouco. Normalmente, implica a realización de calquera tipo de solicitude de rede. Noutras palabras, o acceso a algún tipo de URL que vai contar a API exactamente o que quere, pero os datos son case sempre enviados de volta, noutras palabras, o número 4 JSON. ¿Que é JSON exactamente? Como dixen, JavaScript Object Notation. É basicamente o patrón universal para transmisión e recepción de datos. A idea é que ten esas tres categorías de cousas. Tes matrices, HashMaps, e primitivos. Matrices e HashMaps mirou un pouco no CS50, pero especie de obter un sentido moi estrito do que son. Noutras palabras, con matrices que vostede sabe que eles están tipo encadernado, así só ten unha especie de tipo que vai ao longo da matriz enteira. JSON é moito máis tolerante con este tipo de cousas. Basicamente, a idea é que construír este obxecto, que pode ser composto de calquera destas tres cousas e pode ser composto de varios dos entes, e poden ser aniñados. Aquí é unha especie de un exemplo de JSON, que é esas claves aquí representan o HashMap, e un HashMap é basicamente un mapeamento a partir de calquera tipo de chave a algún tipo de valor. Vai ver aquí que temos a clave propiedades, e que está mapeando para unha matriz, que é esa cousa toda. Vemos outro elemento do HashMap, que é este isAwesome clave, que mapea a un valor primitivo de verdade, noutras palabras, un booleano. Primitivas poden ser strings. Eles poden ser números enteiros. Eles poden ser bools, algo así. E ve o contido deste matriz que apunta a propiedades ten dúas cordas na mesma, auto-similar e marabilloso. Estas son dúas propiedades de JSON, e vemos que o JSON é impresionante. Para ollar que un pouco máis de preto eu vou construír un exemplo máis complexo de JSON aquí. Imos comezar por unha matriz, por exemplo, só unha matriz baleira. Pero iso é tipo de chat, por iso estamos indo a enche-lo un pouco, e como eu dixen, as matrices no JSON son do tipo vinculado, para que pudéssemos ter unha secuencia aquí, que é oi, e este é outro elemento desta matriz. E do mesmo xeito, poderiamos engadir un hashmapping aquí, que vai ter un mapeamento poucos. El vai ter un mapeamento de nome para o Billy cadea. Temos un mapeamento de nome para Billy, e nós temos un mapeamento de cor favorita para azul. Iso é basicamente un bo exemplo de JSON. É o tipo de entra-ops, precisa dunha vírgula alí, todas as distintas partes do mesmo. Unha vez máis, non está obrigado a escribir todos, de modo que pode ter calquera tipo de tipo de dentro de todo o que queira, ea idea é que é auto-similar. Noutras palabras, iso aquí é un obxecto JSON, como é esa cousa toda, como é só iso, entón vostede pode ter un primitivo ser un obxecto, unha matriz ser un obxecto ou un HashMap ser un obxecto. Como pode tipo de ver, JSON é moi, moi útil na medida en que é tan versátil. Pode ter todos os posibles datos que pode concibir almacenados en JSON. Isto o fai unha linguaxe moi agradable de usar con APIs porque practicamente significa que non importa o que os datos que quere alí vai haber algunha maneira de recuperala-lo en JSON. Algunhas propiedades que fan JSON particularmente bo para este tipo de cousas. Como podes ver, en comparación con unha morea de cousas que está a traballar coa CS50 é comparativamente moi fácil de ler e moi doado de escribir. Pode recuar para fóra se quere, como eu estaba facendo nese exemplo, que lle dá unha versión moi agradable que se pode ver moi ben. Pero ademais, tamén é doado de ler e escribir nun ordenador. Noutras palabras, é fácil de analizar e doado de codificar, o que significa que é moi fácil, tanto como a lectura de datos está en causa, e JSON pode ser xerado moi rapidamente. É tamén moi fácil de acceder diferentes partes do JSON e ese tipo de cousas. Isto é bo, e, ademais, o feito de que é auto-similar, noutras palabras, o feito de que pode que dentro de JSON JSON dentro JSON é moi bo para almacenamento de datos. Outra parte que xeralmente é moi útil no traballo con APIs e jQuery. Aprendeu un pouco de JavaScript, que é unha boa forma para manipular HTML e CSS dentro dun sitio web. Pero pode tipo de ser unha dor de código en JavaScript puro, en gran parte, porque o Javascript é unha linguaxe moi detallado. Vostede ten que aprender unha morea de sintaxe, e só para facer cousas moi simples el ten unha morea de código, polo tanto, é unha biblioteca jQuery para JavaScript. Noutras palabras, é un arquivo JavaScript que podes cargar e entón usar as funcións jQuery para facer certas cousas. JQuery e basicamente fai a súa vida moito máis fácil. El simplifica o que levaría centos de liñas en JavaScript para abaixo algunhas liñas en jQuery. El é especialmente útil se está usando APIs porque xeralmente como vai estar accedendo APIs e facendo solicitudes de AJAX, e eu creo que David mencionou charla que solicitudes de AJAX son xeralmente cando está facendo unha solicitude de rede para algún tipo de servidor e volver algún tipo de datos e actualización da páxina instantaneamente. Considerando que, en JavaScript simple que levaría números tolos de liñas para validar todas as cabeceiras e facer todo ese tipo de cousas, jQuery ten unha función moi sinxelo chamado AJAX, e todo o que ten que facer en AJAX é dar os parámetros que quere dar a API, a localización da API e calquera tipo adicional de opcións que quere configurar. É moi, moi bo e moi útil para este tipo de cousas. Isto é todo o que necesitamos para comezar a recibir as nosas mans sucias en APIs Vou traer algúns exemplos e explotar as súas propiedades diferentes e por que son útiles para diferentes tipos de cousas. A primeira cousa que vai realmente mostrar a vostede é algo que eu estou a traballar en no meu laboratorio de investigación, que é un visualizador de ngram, e, basicamente, a idea dun visor de ngram é que pode buscar algún tipo de palabra ou frase para ver cantas veces apareceu nun determinado conxunto de texto ao longo do tempo. Este exemplo aquí é o conxunto de datos de bebés que naceu en Nova York entre 1920 e 2000. Podemos investigar, por exemplo, o nome de Jennifer, e vemos que o pre-1960 realmente non foi usada tanto así, e despois como entramos en anos posteriores que se está facendo cada vez máis utilizado. Tamén podemos facer comparacións, por iso, se compararmos Jennifer, por exemplo, Thomas, podemos ver Thomas foi bastante prevalente ao longo da historia, mentres que Jennifer é un nome máis recente. Podemos facer este tipo de cousas. Como funciona esta aplicación? Basicamente, funciona a través dunha API. Noutras palabras, podemos ter certos parámetros aquí. Temos os parámetros que estamos realmente buscando, cales son eses nomes, e entón temos algunhas propiedades de outros, como o eixe Y é o eixe dos x. Podes ver, temos algunhas opcións diferentes, tanto como o resolución de tempo de usar e que tipo de cousas. Temos estas opcións, tanto como os datos que queremos realmente da base de datos, e queremos obter os datos de volta, dalgunha forma útil. Normalmente, se estivésemos consultando a base de datos directamente sería clasificar de ser unha dor de facer porque presuntamente datos sobre nomes de bebé vive en algún base de datos nalgún lugar, e sería moi complicado ter que consultalo-lo manualmente e decidir exactamente cales datos para voltar. Noutras palabras, só se preocupan Jennifer e Thomas, neste caso, e só se preocupan en un eixe e todo iso tipo de cousas. Como imos solucionar isto? Para cavar esta API un pouco máis eu vou lle amosar un outro exemplo desta plataforma , Que utiliza un conxunto lixeiramente diferente de datos. Este conxunto de datos, en vez de nomes de bebés, é realmente só o todo imprimir datos de publicación da Open Library, que é unha fonte xigante de textos publicados ao longo dos últimos 100 anos ou máis. A idea é que temos ese compository de millóns e millóns de texto, que agora podemos buscar palabras e frases diferentes Pol Aquí está un exemplo que varía un pouco diferente do exemplo anterior Mostre-lle, que é o que temos esas tres consultas de investigación, guerra, guerra, ea palabra francesa para a guerra, que é Guerre. E nós estamos buscando dentro de tres diferentes seccións da base de datos total. Noutras palabras, nesta primeira consulta que estamos só á procura nos Estados Unidos, na segunda só no Reino Unido, eo terceiro só de obras publicadas en Francia. Vemos algúns patróns interesantes emerxen. Por exemplo, podemos ver dereito por aquí, que- Oops, eu errei o eixe un pouco, pero podes ver dereito nesa franxa aquí en torno á Guerra Civil, hai un aumento moi grande na edición americana pero non como un gran aumento nos outros dous, e iso é, obviamente, porque a Guerra Civil Americana estaba acontecendo naquel momento. Podemos ver algunhas cousas legais alí, pero o que realmente importa é como conseguimos estes datos. Vou leva-lo detrás das escenas neste programa un pouco. Un truco é se está a traballar co lugar e tipo de querer saber o que está a suceder nos bastidores, pode abrir as ferramentas de desenvolvedor. Eu vou estar usando ferramentas de desenvolvedor de Chrome, e para chegar aos pode facer cambio de control, J, e que leva para a consola JavaScript. Hai algunhas abas aquí. Eles poden ser moi útiles en circunstancias diferentes, pero eu me importa a rede guía, agora, e eu realmente teño que actualizar para obter ese traballo. Oh, desculpe. Ela gusta de dar un exemplo ao chou. Ok, imos usar este exemplo en vez continuación. A idea é que hai esta API aquí, e podes ver exactamente o que a API está retornando. Isto é o que a aplicación está recibindo de volta a partir da API enviar esta proposta. Deixe-me ampliar un pouco, e podemos ver, basicamente, é só unha serie de pares de valores clave en JSON. Noutras palabras, temos este hashmap aquí que o mapeamento de valores. Noutras palabras, é o mapeamento anos para valores. En 1765 calquera palabra que inicialmente buscado é usado 90 veces de 1 millón, polo que estamos recibindo de volta a este resultado. Non é exactamente JSON unha vez que temos este cabeceira resultado pouco aquí, pero aviso que este obxecto enteiro aquí é só un gran gran blob JSON. Temos unha matriz aquí, que contén ese elemento todo, e podes ver que todo elemento remata aí, e despois temos outro gran elemento que vai todo o camiño ata o final, e que remata aquí. Temos un conxunto moi grande con dous obxectos na mesma, e cada un destes obxectos é un HashMap. Podes ver en cada unha desas HashMaps temos un mapeamento deste valor do índice para o valor 0 e ese valor para outro hashmap, que de novo é o mapeamento de valores do eixo X para os valores do eixo Y. Podes ver JSON queda un pouco complicado, pero en xeral, é realmente moi útil, e é moi fácil de acceder en comparación con outras formas de notación. Tanto como o que en realidade estamos enviando datos para a API para obter, Eu estou indo a ir a extrema traseira un pouco aquí. Este é o arquivo JavaScript grande que está lidando con todas as interaccións da aplicación web, e por iso non me importa a maior parte deste, pero se preocupan algúns deles. Por exemplo, nos preocupa con esta función BuildQuery, ea idea de que esta función é, basicamente, está mirando ao redor da páxina, descubrir o que o usuario quere consultar, noutras palabras, comprobar as caixas de entrada onde os seus termos de procura, comprobación da Y diferente e os valores do eixo X que escolleu e de todos os que tipo de cousas, e vai cuspir este valor da consulta, que pode, entón, enviar o API. Isto parece complicado, e é moi complicado pero o que eu vou facer-en realidade, eu xa estou facendo iso, o que é óptimo, é que eu estou indo a obter a consola para imprimir exactamente que valor da consulta que está enviando fóra para o API. Isto é realmente ben aquí. Sentímolo, xera unha morea de cousas. Pero iso é o que importa, ese obxecto aquí. Este é o obxecto da consulta. Noutras palabras, é exactamente iso que a aplicación web está enviando para a API, e entón imos ollar para dentro dun pouco, e vemos que temos algúns valores aquí. Vemos que temos este tipo de conta, que é coincidencias por millón de palabras, que é o que nós escoller no eixe Y aquí. É onde que vén. Temos unha base de datos de valor, o que significa que hai algún determinado base de datos que estes datos son vivindo, e queremos acceder a estes datos especialmente ao contrario de nomes do bebé de datos, por exemplo. Entón, temos este valor grupos, que está dicindo que quere buscar por ano en vez de calquera outro eixe X valor. Entón, temos un método, que algunhas APIs vai facer moitas cousas. Noutras palabras, esta API tamén pode retornar outros tipos de datos, pero, neste caso, queremos que o mapeamento dos valores do eixo X para valores do eixo Y. Isto é o que está dicindo a el para facer alí, e nós temos esta busca límites matriz que contén dous valores. O primeiro é o que vemos aquí, o que é de todos os valores contido dentro desa primeira caixa pequena na parte superior. Noutras palabras, nós queremos mirar para a batalla palabra, e queremos filtrar por textos en inglés dentro da literatura norteamericana. Temos este país, que é EUA. Temos unha linguaxe, que é o inglés, polo que temos todas esas pezas diferentes que están todos dicindo a API exactamente o que queremos. Nós non sabemos o que os datos que recibimos de volta e aínda, pero sabemos que os datos vai ter unha certa forma. Este exemplo é unha especie de no lado complicado, e non sería necesariamente usar unha API deste complexo, pero iso é para amosar-lle o alcance e poder do que APIs pode facer. Noutras palabras, usando un sistema de consulta relativamente simple, temos basicamente unha caixa de entrada cun seletores de algúns outros en diferentes lugares. Deixe-me o zoom aquí. Temos unha caixa de entrada con algunhas seleccións de metadatos diferentes, e temos eixe Y e seleccións eixe x. Nós realmente non teñen campos que moitos, e podemos ver moi facilmente somos capaces de ver algún tipo de API e obter datos de volta e, a continuación, colocar-lo en este gráfico, que é, entón, vai amosar-lo nunha forma útil. Mirar para outro exemplo que pode ser un pouco máis familiar para vostedes imos volver para o Facebook. API de Facebook chámase Gráfico Facebook e, basicamente, o que significa que é o Facebook se ve como esta enorme base de datos de lotes de pezas diferentes que teñen certas relacións entre si. Noutras palabras, eu son un usuario de Facebook, entón eu teño un perfil, e I tamén teñen certos amigos, e cada un deles ten un perfil, e cada un dos meus amigos ten unha parede, que ten diferentes comentarios sobre el, e cada un destes comentarios ten gustos e de todos os que tipo de cousas. Hai lotes de diferentes partes ao Facebook. É unha API moi complexo, e hai toneladas que podes facer con el, pero a verdade é moi sinxelo de usar. Vou comezar por ir a graph.facebook.com / billyjanitsch, que é o meu nome de conta única, eo seu nome de conta ou será algún tipo de palabra, se escolleu, ou que podería ser só unha secuencia de números. O que temos de volta é unha información moi básica. Vemos que eu teño un nome, que é Billy, un apelido, que é Janitsch. Hai un Facebook ID único que eu teño. Podes ver que eu son macho e que eu teño a miña configuración de idioma Inglés Británico. Noutras palabras, nós estamos vendo información moi básica aquí. Non é moito, pero dános unha idea do que está aí. Podemos facer a mesma cousa con David Malan, por exemplo. Eu creo que o seu nome é dmalan. Vemos David Malan ten unha identificación única. El ten un nome, nome, nome do medio, apelidos. Vemos tamén que é de sexo masculino e ten o seu conxunto de linguaxe para Inglés de Estados Unidos. Noutras palabras, nós estamos vendo informacións bastante básico aquí. Agora, o que pasa se tentar comprobar algunha outra cousa? Imos dicir que eu estou interesado no que David Malan ten gusto en Facebook. Eu podo facer / gustos. Agora imos correr nun problema. Temos algún tipo de erro que di que un token de acceso está obrigado a solicitar este recurso. Pero se pensar sobre iso, que realmente ten sentido, porque sería estraño se puidese acceder cada parte da base de datos de Facebook só a partir de calquera tipo de API simple, non? Noutras palabras, probablemente a información non poden acceder por calquera que queira. Este erro é o que iso significa. Algunhas APIs esixen certas permisos para acceder os seus datos. E APIs aínda máis avanzados, como Facebook un, esixirá determinadas permisos para facer certas cousas. Eu podo ver esta información básica sobre David Malan. Podo ver que é de sexo masculino e que vive en Estados Unidos, pero eu realmente non podo ver nada alén diso. Para evitar esta situación, polo de agora, Facebook ten esta ferramenta agradable Que é o gráfico API explorador, ea idea de que é o que pode clasificar de tornar-se permisos para baseado na súa propia conta e despois ver as cousas que especificamente a súa conta pode ver. Por exemplo, se eu fai graph.facebook.com/billyjanitsch/likes- Oops, eu creo que ten que revalidar o meu token aquí. Okay. Se eu fai iso de novo, gran, agora eu vexo que eu teño ese obxecto de volta que di que me gusta de pasta piscina, que son na categoría Xogos e Xoguetes. Eu gusto de morsas, que están na categoría animal. Estes son os meus gustos Facebook reais. Son medio constrangedor. Pero podemos ver estes datos son todos volveron en JSON. É moi lexible. Noutras palabras, temos ese mapeamento de datos para algún tipo de matriz, e cada elemento desta matriz é un HashMap que mapea o nome dunha como a categoría e dun gusto. Cada un como ten unha identificación única. Hai todo tipo de cousas distintas de datos que podemos obter, e se vostede está interesado en usar a API de Facebook para un proxecto final, CS50 ou para calquera cousa como que en realidade é bastante factible. Basicamente como dar a volta á cousa de autenticación é Facebook usa un sistema chamado OAuth ou Open authentication, e eu non quero entrar agora porque OAuth ou o tipo de autenticación tende a variar moito entre distintas APIs, para que eu puidese pasar un longo tempo pasando por riba de cada un, pero son realmente moi auto-explicativo. Se Google Facebook API é moi lexible. Hai unha especificación todo. Por exemplo, esta é a documentación para a API de Facebook, e podes ver que eu estou na páxina do usuario, para que eu poida aprender todo sobre os distintos tipos de cousas que están dispoñibles para obter os datos, na medida do e tamén os permisos diferentes que eu teño, a fin de acceder a eles. Como vimos, non precisamos de permisos para acceder o nome ou o sexo, pero ademais necesitamos permisos para a maioría das cousas. Esta páxina, ou mellor, este sitio tamén pode dicirlle como chegar un token para ser capaz de acceder ao sistema. A maioría dos sistemas de autenticación usar algún tipo de Token onde recibe ese valor único, que é unha cadea moi longa e aleatoria, e de que xeito poden asociar a petición que está facendo con vostede. Noutras palabras, eles saben que non está facendo nada de sospeitoso cos seus datos. Eles saben exactamente o que está a recibir. Eles saben que ten permiso para ver a información. Se fixo unha aplicación de Facebook eo seu programa ten certos usuarios, e os usuarios teñen permitido que o app para acceder certas partes do seu perfil, entón calquera clave de API ou token que ese programa está a usar será capaz de acceder aos datos para eses usuarios. Isto pode parecer complicado, pero non é tan malo, e se quere usar o Facebook Eu recomendo que considerar a xogar coa súa API. É moi legal, e pode facer unha chea de cousas distintas con el. Se o usuario concede os permisos que pode incluso volver para a API e dicir que quero, en realidade, poñer a parede do usuario, ou quero telos publicar unha foto, e é por iso que no seu comentario de noticias comeza ás veces esas cousas irritantes dicindo que o seu amigo teña visto este vídeo en algún tipo de sitio estraño ou algo parecido. Isto porque ese app foi concedido acceso para publicar no mural da persoa. A idea xeral, a API de Facebook é moi complicado, pero tamén moi útil. Paga a pena probar se aínda está a buscar un proxecto final. Outro conxunto de APIs que eu vou pasar por riba de APIs e CS50. Deixe-me achegar aquí. CS50 ten realmente xuntar unha serie de APIs que pode usar para un proxecto final ou só para calquera cousa que está facendo. E eles están principalmente relacionados Harvard, e varían dende o menú HUDS, por exemplo, para este Harvard Eventos API, o que lle permitirá acceder a unha lista de distintos eventos que están a ocorrer en Harvard e ese tipo de cousas. E, así, pode premer en calquera deles e ter unha especificación para el, que vai ser capaz de atopar a calquera API, ea idea é el permite que vostede sabe, A, concretamente o de solicitar a API e como solicitalo-la. Noutras palabras, se eu queira que todos os eventos que están a ocorrer mañá entón eu teño que, obviamente, darlle esa data que quero nun determinado formato, e B, el me vai dicir exactamente o que vai dar de volta para min. El vai dicir que eu estou indo a volver este obxecto JSON, ou como se pode ver, hai diferentes formatos. Tamén pode voltar os datos como CSV, por exemplo. Pero vostede sabe exactamente como os datos vai mirar cando recibe de volta entón pode esperar para facer certas cousas con el. Nós pode rolar para abaixo e ver, por exemplo, se queremos consultar a API para obter un calendario, entón podemos utilizar este URL especial e darlle certos parámetros que van ser os datos que queremos exactamente. E do mesmo xeito, se queremos que os datos de volta en un formato, entón podemos pedir-lle para transmitir os datos nun ficheiro CSV, e iso é só outro parámetro que estamos pasando a API. Moitas cousas legais para facer alí. Eu sempre recomenda comprobar as APIs CS50. Vou mirar para esta API Alimentos Harvard, en especial para un pouco. Unha cousa que eu realmente deseñado e este Harvard web Noms, que utiliza a API Food CS50 para recuperar o menú HUDS para o día. E para a xente da escola de extensión, HUDS é o servizo de xantar en Harvard. O que recibe é esta páxina que contén todas as comidas do día, polo que vemos o xantar. Temos algunhas categorías diferentes. Temos o feixón e da estación de grans enteiros. Temos a estación de arroz integral. Podemos ver a brunch temos estes alimentos poucos. Se premer sobre eles, entón temos a información nutricional. Vostede ve esta é a información nutricional para grapefruit, se estea preguntando. E de novo, imos para perscrutar o extremo traseira un pouco aquí para ver exactamente o que iso está facendo para obter estes datos. E iso acaba por non ser realmente moi complexo en todo. Este ficheiro parece un pouco confuso, pero teña en conta que está a manexar o sitio enteiro, e se eu rolar para abaixo vemos este cambio función de datos. Agora, só para quedar claro, iso está escrito no CoffeeScript, que é unha linguaxe que probablemente non teña visto antes. Pero é moi lexible, entón eu vou pasar por ela como se fose pseudocódigo. Cambiar data é unha función que vai levar este valor, data e tamén vai levar un primeiro, que non se preocupan o máximo. Pero o importante é que ten esta data, e esa data é o día que queremos pedir a todos os elementos alimenticios para. E entón ve que temos un pouco de sintaxe aquí, que é basicamente analizar esa data nun formato lexible. Noutras palabras, o API esixe a data nun formato determinado. Vostede non pode simplemente dicir 16 de novembro de 2012 AD. El non vai saber o que facer con iso. El quere a data nun formato específico. Todo o que estamos facendo aquí é dar-lle exactamente o formato que, que é un valor de ano e, a continuación, un guión, un valor de mes, outro trazo eo valor de data. E tamén dicir que queremos os datos para saída en JSON. Agora estamos facendo esta petición AJAX, e como xa refire anteriormente, jQuery ten esta super función AJAX útil, que todo o que cómpre facer é especificar algúns parámetros para abaixo aquí, e lle vai dar de volta exactamente o que quere. Estamos dicindo é que a URL que queremos ir é esta API Alimentos CS50, que temos a partir da especificación. Nós dicimos que queremos que os datos JSON e que imos dar-lle estes datos que temos aquí definidos. Este é o día en que quere que os elementos alimenticios para. E entón todo o que temos que facer é definir algún tipo de función de éxito, que é basicamente o que acontece cando a API retorna os datos. Noutras palabras, nós embalados todos os parámetros que queremos, que neste caso é o día que queremos que el eo feito de que queremos en JSON, e enviou-o para a API, agora API está dicindo, todo ben, aquí está os seus datos, eu peguei de volta para ti. Temos a función de éxito, o que significa que unha vez que a API con éxito retorna algúns datos, o que imos facer con el? E verifícase que todo o que facemos é chamar esta función menú de actualización co que a API está de volta, para que poidamos procurar que e ver que todo o que estamos facendo é usar unha morea de nova sintaxe aquí para actualizar o HTML e inserir eses datos novos. O que permite é que temos esas frechas de cada lado, e podemos premer, e agora estamos mirando para os datos para o día seguinte e de novo ao día seguinte, e cada vez que actualizar ese valor de data e consultando a API, volver algúns datos e colocar-lo no sitio. Unha vez máis, verás, super, super útil. Esta aplicación levoume unhas horas para cortar xuntos, e eu teño un pouco máis de experiencia, obviamente, pero o seu proxecto final, CS50 pode ser algo moi parecido con iso. APIs son super potente para a cantidade de esforzo que toman. A última cousa que eu vou pasar por riba de algunhas APIs é máis ampla. Eu non vou chegar tan lonxe para eles, tanto como o que fan especificamente, pero vou lle dar unha idea do que está aí fóra. 2 Os realmente útiles, se vostede está interesado na análise de datos ou visualización ou algo así, son Freebase e Wikipedia. Wikipedia-presuntamente todos saben, é unha enciclopédia libre en liña, e realmente ten unha API, por iso, se quere, por exemplo, obter todos os textos e os artigos para polbo pode facilmente facelo. Basta dicir hey, Wikipedia API, gustaríame que os datos obtidos coma este, e me gustaría que neste formato, eo artigo que me gustaría é polbo, e moi rapidamente el lle vai dar de volta esa información. Isto pode ser moi útil se quere facer algún tipo de sitio web iso é unha mellor visualización para a Wikipedia ou algo así. Freebase é unha especie de similar, aínda que sexa un pouco máis difícil, tanto como API. Freebase é como a Wikipedia, que é unha enciclopedia en liña que contén moitos e moitos datos diferentes sobre todo tipo de temas diferentes, pero é almacenado nunha base de datos relacional, que é un pouco diferente da Wikipedia. Wikipedia ten os seus artigos e artigos ligados a outros artigos, pero a maior parte, se quere os datos para o polbo, vai para o artigo polbo, obter os datos, e ten unha morea de texto sobre os polbos, o que é óptimo. Freebase funciona dun xeito un pouco máis complicada en que todo está relacionado con outro. Noutras palabras, se estamos á procura de polbo el ten unha morea de categorías de asociados. Por exemplo, é un animal que vive debaixo da auga, ela ten unha temperatura corporal determinado. Eu non sei. E todas esas categorías son enlaces a outros lugares onde pode ir a ver as cousas con mesma categoría. Noutras palabras, o polbo conxunto de datos que contén un enlace para o conxunto de datos para todos os animais, e que me deixou pasar na base de datos moi rapidamente. Isto pode ser moi útil se está facendo algo así como comparacións. Noutras palabras, dada unha certa cousa, que quere ver o que máis está relacionado e ver o que máis non está relacionado. Ese tipo de cousas. Pode ser útil nun número de formas. Se está buscando por máis de un reto e ser capaz de facer algunhas cousas máis complexas Eu consideraría un ollo na API Freebase. Pero en gran parte, a Wikipedia é un lugar moi simple para ir tan lonxe como a obtención de información. Outro lugar que eu vou mirar é o Last.fm, e eu estou indo realmente para ir ao sitio no caso de que algunhas persoas non están familiarizados, pero Last.fm é basicamente unha música gustos e web recomendacións. Podes facer unha conta. Pode comezar a cargar música do seu reprodutor de música para o sitio, e, basicamente, que vai comezar a darlle recomendacións de música con base no que se escoita. Por exemplo, se vai para o seu perfil de páxina é de minas podes ver que ten unha lista de recentemente escoitou pistas. Podes ver xerais artistas favoritos, todos este tipo de cousas, e, de novo, hai unha API de gran detrás Last.fm,  e pode usalo para facer moitas e moitas cousas legais. Por exemplo, eu vou á páxina de un amigo que ten esta web Last.fm ferramentas. Esta é realmente unha outra plataforma que está construído sobre a API de Last.fm, e fai unha serie de fermosas cousas interesantes. Se eu escribir o meu nome de usuario, por exemplo, Eu podo pedir para el xerar unha nube de etiquetas, por exemplo, eo que isto vai facer é me dar de volta unha imaxe de todos os distintos xéneros e este tipo de cousas que eu gusto de escoitar. Como é que está facendo isto? Moi basicamente está dicindo a API de Last.fm aquí está este usuario. Gustaríame saber o xénero de cada canción que xa escoitou, e pode facelo facendo unha ben simple chamada AJAX para a API de Last.fm. Vostede recibirá de volta unha gran lista e, entón, obviamente, algunhas outras cousas está a ser feito para transformalo en unha nube de palabras, pero podes ver xeral é moi fácil de acceder e moi doado de usar. Moi bo para unha serie de cousas. Eu creo que iso é todo o que eu vou dicir en xeral. Unha última cousa que eu vou falar sobre APIs en xeral é que vai, ás veces, en algo chamado límite de taxa, ea idea de limitación de velocidade é que non quere abusar APIs Noutras palabras, é moi bo que moitos destes sitios teñen APIs que pode ir e usar de balde. Con todo, se está facendo millóns ou billóns de solicitudes ao día, Por exemplo, se vostede está preso nun loop infinito que é infinitamente consultando algún tipo de API e recibindo de volta unha cantidade enorme de datos, obviamente que non é bo, entón o que unha morea de APIs facer é ter a taxa limitante que di que só se pode facer 1.000 solicitudes por día e por enderezo IP ou algo así. E se está facendo unha morea de probas e este tipo de cousas, ás veces executar para iso, e de súpeto el desactiva-lo fóra e dicir non, eu non vou che dar máis datos. O que quere facer é xogar polas regras. Quere estar seguro de que le a especificación API coidado. Se ten certas regras ligadas a el, como só se pode facer consultas X por día ou podes acceder só unha parte da base de datos dun determinado número de veces ou algo así que quere estar seguro de que ater a iso. Mentres xogar dentro desas regras que probablemente vai ter un tempo moi bo usando APIs O seu takeaway xeral é APIs son moi, moi útil. Hai unha API para case calquera servizo web grande alí fora. Practicamente calquera parte do ferramentas Google Suite, Google Maps, Google Earth, Gmail, Google Calendar, todas estas cousas teñen APIs Podes usalos cos datos de comezar dende o servidor e enviar datos ao servidor. Noutras palabras, se quere facer unha aplicación de calendario que pode actualizar Calendario de alguén de Google, hai unha API para iso. Se queres facer algo que vai che dicir onde a localización dun determinado enderezo é que pode usar a API de Google Maps para iso. APIs son fantástica útil, e eles están en todas partes. Se vostede está interesado en algún tipo de idea, probablemente hai unha API relacionado que pode usar para obter unha gran cantidade de datos moi rapidamente e de xeito moi sinxelo. Se aínda está a buscar un proxecto ou se só quere xogar con algo en xeral, APIs son sempre paga a pena facer. Grazas, e eu estou feliz en responder calquera pregunta que vostedes poidan ter. Ok, moitas grazas. [CS50.TV]