[Powered by Google Translate] [Seminário] [Introdução de um programador de APIs] [Billy Janitsch] [Harvard University] [Tommy MacWilliam] [Esta é CS50.] [CS50.TV] Oi, todos, eu sou o Billy, e hoje eu vou estar falando sobre APIs, ou interfaces de programação de aplicativos, especificamente no contexto da CS50 projetos finais e esse tipo de coisa. Em geral o que é uma API? Em termos muito gerais, é uma espécie de homem de meia que permite que duas peças de software para comunicar uns com os outros. Isso é um tipo de definição muito ampla e não é tão relevante para o que estamos olhando. O que realmente queremos é uma espécie de meio termo útil para se comunicar com algum tipo de banco de dados em algum lugar. Aqui está um gráfico, e, basicamente, a idéia é que nós somos uma aplicação, e queremos obter dados a partir de um banco de dados, mas não deseja consultar o banco de dados diretamente. Em vez disso, quero passar por esse tipo de homem médio, a API. A idéia por trás disso é os números 2 e 3 do gráfico são ambos vai ser muito complicado e confuso. Em outras palavras, quando a API está consultando o banco de dados, ele provavelmente vai estar usando tabelas SQL e todos esse tipo de coisa, e aprendemos um pouco sobre isso no CS50, mas no geral, você percebeu que é um pouco de dor. Ele fica muito, muito complicado e confuso, especialmente quando você está fazendo consultas complexas e esse tipo de coisa. O que realmente queremos é algum tipo de forma útil e simples para obter esses dados, e essa é a idéia por trás de números 1 e 4 do gráfico. Em outras palavras, queremos uma maneira muito simples de dizer o que a API para obter para nós e uma maneira realmente simples de se obter os dados de volta. Há um modo principal, que normalmente é de que os dados enviados e recebidos, que é JSON ou JavaScript Object Notation. Que pode variar um pouco, tanto quanto como você enviar a solicitação para a API. Em outras palavras, se você quer alguma certa quantidade de dados, como você dizer a API para obter os dados podem variar um pouco. Normalmente, envolve a realização de algum tipo de solicitação de rede. Em outras palavras, o acesso a algum tipo de URL que vai contar a API exatamente o que você quer, mas os dados são quase sempre enviados de volta, em outras palavras, o número 4 JSON. O que é JSON exatamente? Como eu disse, JavaScript Object Notation. É basicamente o padrão universal para transmissão e recepção de dados. A idéia é que você tem essas três categorias de coisas. Você tem matrizes, HashMaps, e primitivos. Matrizes e HashMaps você olhou um pouco no CS50, mas você espécie de obtido um sentido muito estrito do que eles são. Em outras palavras, com matrizes que você sabe que eles estão tipo encadernado, assim você só tem uma espécie de tipo que vai ao longo da matriz inteira. JSON é muito mais tolerante com esse tipo de coisa. Basicamente, a idéia é que você construir este objeto, que pode ser composto de qualquer uma destas três coisas e pode ser composto de vários dos entes, e eles podem ser aninhados. Aqui é uma espécie de um exemplo de JSON, que é essas chaves aqui representam o HashMap, e um HashMap é basicamente um mapeamento a partir de algum tipo de chave a algum tipo de valor. Você vai ver aqui que temos a chave propriedades, e que está mapeando para uma matriz, que é essa coisa toda. Vemos um outro elemento do HashMap, que é este isAwesome chave, que mapeia para um valor primitivo de verdade, em outras palavras, um booleano. Primitivas podem ser strings. Eles podem ser números inteiros. Eles podem ser bools, qualquer coisa assim. E você vê o conteúdo deste matriz que aponta para propriedades tem duas cordas na mesma, auto-similar e maravilhoso. Essas são duas propriedades de JSON, e vemos que o JSON é impressionante. Para olhar que um pouco mais de perto eu vou construir um exemplo mais complexo de JSON aqui. Vamos começar com uma matriz, por exemplo, apenas uma matriz vazia. Mas isso é tipo de chato, por isso estamos indo para preenchê-lo um pouco, e como eu disse, as matrizes no JSON são do tipo vinculado, para que pudéssemos também ter uma seqüência aqui, que é oi, e este é outro elemento dessa matriz. E do mesmo modo, poderíamos adicionar um hashmapping aqui, que vai ter um mapeamentos poucos. Ele vai ter um mapeamento de nome para o Billy string. Nós temos um mapeamento de nome para Billy, e nós temos um mapeamento de cor favorita para azul. Isso é basicamente um bom exemplo de JSON. É o tipo de entra-ops, precisa de uma vírgula ali, todas as diferentes partes do mesmo. Mais uma vez, não é obrigado a digitar todos, de modo que você pode ter qualquer tipo de tipos de dentro de tudo o que quiser, ea idéia é que é auto-similar. Em outras palavras, isso aqui é um objeto JSON, como é essa coisa toda, como é apenas isso, então você pode ter um primitivo ser um objeto, uma matriz ser um objeto ou um HashMap ser um objeto. Como você pode tipo de ver, JSON é muito, muito útil na medida em que é tão versátil. Você pode ter todos os possíveis dados que você pode conceber armazenados em JSON. Isso o torna uma linguagem muito agradável de usar com APIs porque praticamente significa que não importa o que os dados que você quer lá vai haver alguma maneira de recuperá-lo em JSON. Algumas propriedades que fazem JSON particularmente bom para este tipo de coisa. Como você pode ver, em comparação com um monte de coisas que você está trabalhando com a CS50 é comparativamente muito fácil de ler e também muito fácil de escrever. Você pode recuar para fora se você quiser, como eu estava fazendo nesse exemplo, que lhe dá uma versão muito agradável que você pode ver muito bem. Mas além disso, também é fácil de ler e escrever para um computador. Em outras palavras, é fácil de analisar e fácil de codificar, o que significa que é muito fácil, tanto quanto a leitura de dados está em causa, e JSON pode ser gerado muito rapidamente. É também muito fácil de acessar diferentes partes do JSON e esse tipo de coisa. Isso é bom, e, além disso, o fato de que é auto-similar, em outras palavras, o fato de que você pode ter dentro de JSON JSON dentro JSON é muito bom para armazenamento de dados. Outra parte que geralmente é muito útil no trabalho com APIs é jQuery. Você aprendeu um pouco de JavaScript, que é uma boa forma para manipular HTML e CSS dentro de um site. Mas pode tipo de ser uma dor de código em JavaScript puro, em grande parte, porque o JavaScript é uma linguagem muito detalhado. Você tem que aprender um monte de sintaxe, e apenas para fazer coisas muito simples ele tem um monte de código, portanto, é uma biblioteca jQuery para JavaScript. Em outras palavras, é um arquivo JavaScript que você pode carregar e então usar as funções jQuery para fazer certas coisas. JQuery e basicamente faz a sua vida muito mais fácil. Ele simplifica o que levaria centenas de linhas em JavaScript para baixo algumas linhas em jQuery. Ele é especialmente útil se você estiver usando APIs porque geralmente como você vai estar acessando APIs é fazendo solicitações de AJAX, e eu acredito que David mencionou em palestra que solicitações de AJAX são geralmente quando você está fazendo uma solicitação de rede para algum tipo de servidor e voltar algum tipo de dados e atualização de uma página instantaneamente. Considerando que, em JavaScript simples que levaria números loucos de linhas para validar todos os cabeçalhos e fazer todo esse tipo de coisa, jQuery tem uma função muito simples chamado AJAX, e tudo que você tem que fazer em AJAX é dar os parâmetros que você quer dar a API, a localização da API e qualquer tipo adicional de opções que você deseja configurar. É muito, muito bom e muito útil para este tipo de coisa. Isso é tudo o que precisamos para começar a receber nossas mãos sujas em APIs. Eu vou trazer alguns exemplos e explorar suas propriedades diferentes e por que eles são úteis para diferentes tipos de coisas. A primeira coisa que vai realmente mostrar a você é algo que eu estou trabalhando em no meu laboratório de pesquisa, que é um visualizador de ngram, e, basicamente, a idéia de um visualizador de ngram é que você pode procurar algum tipo de palavra ou frase e ver quantas vezes ele apareceu em um determinado conjunto de texto ao longo do tempo. Este exemplo aqui é o conjunto de dados de bebês que nasceu em Nova York entre 1920 e 2000. Podemos pesquisar, por exemplo, para o nome de Jennifer, e vemos que o pré-1960 realmente não foi usada tanto assim, e depois como entramos em anos posteriores que está se tornando cada vez mais utilizado. Nós também podemos fazer comparações, por isso, se compararmos Jennifer, por exemplo, Thomas, podemos ver Thomas tem sido bastante prevalente ao longo da história, enquanto que Jennifer é um nome mais recente. Nós podemos fazer esse tipo de coisa. Como funciona essa aplicação? Basicamente, funciona através de uma API. Em outras palavras, podemos ter certos parâmetros aqui. Nós temos os parâmetros do que estamos realmente buscando, quais são esses nomes, e então nós temos algumas propriedades de outros, como o eixo Y e o eixo dos x. Você pode ver, temos algumas opções diferentes, tanto quanto o resolução de tempo de usar e que tipo de coisa. Temos essas opções, tanto quanto os dados que nós queremos realmente do banco de dados, e queremos obter os dados de volta, de alguma forma útil. Normalmente, se estivéssemos consultando o banco de dados diretamente seria classificar de ser uma dor de fazer porque presumivelmente dados sobre nomes de bebê vive em algum banco de dados em algum lugar, e seria muito complicado ter que consultá-lo manualmente e decidir exatamente quais dados para retornar. Em outras palavras, só se preocupam com Jennifer e Thomas, neste caso, e só se preocupam em um determinado eixo e tudo isso tipo de coisa. Como vamos resolver isso? Para cavar esta API um pouco mais eu vou lhe mostrar um outro exemplo desta plataforma , que utiliza um conjunto ligeiramente diferente de dados. Este conjunto de dados, em vez de nomes de bebês, é realmente apenas o todo imprimir dados de publicação da Open Library, que é uma fonte gigante de textos publicados ao longo dos últimos 100 anos ou mais. A idéia é que temos esse compository de milhões e milhões de texto, que agora podemos procurar por palavras e frases diferentes pol Aqui está um exemplo que varia um pouco diferente do exemplo anterior Mostrei-lhe, o que é que temos essas três consultas de pesquisa, guerra, guerra, ea palavra francesa para a guerra, que é guerre. E nós estamos buscando dentro de três diferentes seções do banco de dados total. Em outras palavras, nesta primeira consulta que estamos apenas à procura nos EUA, na segunda só no Reino Unido, eo terceiro apenas de obras publicadas em França. Vemos alguns padrões interessantes emergem. Por exemplo, podemos ver direito por aqui, que- opa, eu errei o eixo um pouco, mas você pode ver direito nessa faixa aqui em torno da Guerra Civil, há um aumento muito grande na edição americana mas não como um grande aumento nos outros dois, e isso é, obviamente, porque a Guerra Civil Americana estava acontecendo naquele momento. Podemos ver algumas coisas legais lá, mas o que realmente importa é como conseguimos esses dados. Vou levá-lo atrás das cenas neste aplicativo em um pouco. Um truque é se você está trabalhando com o local e tipo de querer saber o que está acontecendo nos bastidores, você pode abrir as ferramentas de desenvolvedor. Eu vou estar usando ferramentas de desenvolvedor do Chrome, e para chegar aos você pode fazer mudança de controle, J, e que leva você para o console JavaScript. Há algumas abas aqui. Eles podem ser muito úteis em circunstâncias diferentes, mas eu me importo com a rede guia, agora, e eu realmente tenho que atualizar para obter esse trabalho. Oh, desculpe. Ela gosta de dar um exemplo aleatório. Ok, vamos usar este exemplo em vez seguida. A idéia é que há esta API aqui, e você pode ver exatamente o que a API está retornando. Isto é o que o aplicativo está recebendo de volta a partir da API ter enviado esse pedido. Deixe-me ampliar um pouco, e podemos ver, basicamente, é apenas uma série de pares de valores-chave em JSON. Em outras palavras, nós temos este hashmap aqui que está o mapeamento de valores. Em outras palavras, é o mapeamento anos para valores. Em 1765 qualquer palavra que inicialmente procurado é usado 90 vezes de 1 milhão, por isso estamos recebendo de volta a este resultado. Não é exatamente JSON uma vez que temos este cabeçalho resultado pouco aqui, mas aviso que este objeto inteiro aqui é apenas um grande grande blob JSON. Nós temos uma matriz aqui, que contém esse elemento todo, e você pode ver que todo elemento termina aí, e depois temos outro grande elemento que vai todo o caminho até o fim, e que termina aqui. Temos um conjunto muito grande com dois objetos na mesma, e cada um desses objetos é um HashMap. Você pode ver em cada uma dessas HashMaps temos um mapeamento deste valor do índice para o valor 0 e esse valor para outro hashmap, que novamente é o mapeamento de valores do eixo X para os valores do eixo Y. Você pode ver JSON fica um pouco complicado, mas no geral, é realmente muito útil, e é muito fácil de acessar em comparação com outras formas de notação. Tanto quanto o que na verdade estamos enviando dados para a API para obter, Eu estou indo para ir para a extremidade traseira um pouco aqui. Este é o arquivo JavaScript grande que está lidando com todas as interações do aplicativo web, e por isso não me importo com a maior parte deste, mas se preocupam com alguns deles. Por exemplo, nós nos preocupamos com esta função BuildQuery, ea idéia de esta função é, basicamente, ele está olhando ao redor da página, descobrir o que o usuário quer consultar, em outras palavras, verificar as caixas de entrada onde eles seus termos de busca, verificação da Y diferente e os valores do eixo X que você escolheu e de todos que tipo de coisa, e vai cuspir este valor da consulta, que pode, então, enviar para o API. Isso parece complicado, e é muito complicado mas o que eu vou fazer-na verdade, eu já estou fazendo isso, o que é ótimo, é que eu estou indo para obter o console para imprimir exatamente que valor da consulta que ele está enviando fora para o API. Isso é realmente bem aqui. Desculpe, ele gera um monte de coisas. Mas isso é o que importa, esse objeto aqui. Este é o objeto da consulta. Em outras palavras, é exatamente isso que a aplicação web está enviando para a API, e então vamos olhar para dentro um pouco, e vemos que temos alguns valores aqui. Vemos que temos este tipo de contagem, que é ocorrências por milhão de palavras, que é exatamente o que nós escolhemos no eixo Y aqui. É onde que vem. Temos um banco de dados de valor, o que significa que há algum determinado banco de dados que esses dados são vivendo, e queremos acessar esses dados especificamente ao contrário de nomes do bebê de dados, por exemplo. Então, temos este valor grupos, que está dizendo que quer procurar por ano em vez de qualquer outro eixo X valor. Então, temos um método, que algumas APIs vai fazer várias coisas. Em outras palavras, essa API também pode retornar outros tipos de dados, mas, neste caso, queremos que o mapeamento dos valores do eixo X para valores do eixo Y. Isso é o que está dizendo a ele para fazer lá, e nós temos esta busca limites matriz, que contém dois valores. O primeiro é o que vemos aqui, o que é de todos os valores contido dentro dessa primeira caixa pequena na parte superior. Em outras palavras, nós queremos olhar para a batalha palavra, e nós queremos filtrar por textos em inglês dentro da literatura americana. Temos este país, que é EUA. Nós temos uma linguagem, que é o Inglês, por isso temos todas essas peças diferentes que estão todos dizendo a API exatamente o que queremos. Nós não sabemos o que os dados que recebemos de volta é ainda, mas sabemos que os dados vai ter uma certa forma. Este exemplo é uma espécie de no lado complicado, e você não seria necessariamente usando uma API deste complexo, mas isso é para mostrar-lhe o alcance e poder do que APIs pode fazer. Em outras palavras, usando um sistema de consulta relativamente simples, temos basicamente uma caixa de entrada com um seletores de alguns outros em lugares diferentes. Deixe-me o zoom aqui. Nós temos uma caixa de entrada com algumas seleções de metadados diferentes, e temos eixo Y e seleções eixo x. Nós realmente não têm campos que muitos, e podemos ver muito facilmente somos capazes de consultar algum tipo de API e obter dados de volta e, em seguida, colocá-lo em este gráfico, que é, então, vai exibi-lo em uma forma útil. Olhar para outro exemplo que pode ser um pouco mais familiar para vocês vamos voltar para o Facebook. API do Facebook é chamado de Gráfico Facebook, e, basicamente, o que significa que é o Facebook se vê como esta enorme banco de dados de lotes de peças diferentes que têm certas relações entre si. Em outras palavras, eu sou um usuário no Facebook, então eu tenho um perfil, e I também têm certos amigos, e cada um deles tem um perfil, e cada um dos meus amigos tem uma parede, que tem diferentes comentários sobre ele, e cada um desses comentários tem gostos e de todos que tipo de coisa. Há lotes de diferentes partes para o Facebook. É uma API extremamente complexo, e há toneladas que você pode fazer com ele, mas na verdade é muito simples de usar. Vou começar por ir a graph.facebook.com / billyjanitsch, que é o meu nome da conta única, e seu nome de conta ou será algum tipo de palavra, se você escolheu, ou que poderia ser apenas uma seqüência de números. O que temos de volta é uma informação bastante básico. Vemos que eu tenho um nome, que é Billy, um sobrenome, que é Janitsch. Há um Facebook ID único que eu tenho. Você pode ver que eu sou macho e que eu tenho a minha configuração de idioma de Inglês Britânico. Em outras palavras, nós estamos vendo informações muito básicas aqui. Não é muito, mas dá-nos uma ideia do que está lá. Nós podemos fazer a mesma coisa com David Malan, por exemplo. Eu acho que o nome dele é dmalan. Vemos David Malan tem uma identificação única. Ele tem um nome, nome, nome do meio, sobrenome. Vemos também que ele é do sexo masculino e tem o seu conjunto de linguagem para Inglês dos EUA. Em outras palavras, nós estamos vendo informações bastante básico aqui. Agora, o que acontece se tentar verificar alguma outra coisa? Vamos dizer que eu estou interessada no que David Malan tem gostado no Facebook. Eu posso fazer / gostos. Agora vamos correr em um problema. Nós temos algum tipo de erro que diz que um token de acesso é obrigado a pedir este recurso. Mas se você pensar sobre isso, que realmente faz sentido, porque seria estranho se você pudesse acessar cada parte do banco de dados do Facebook só a partir de algum tipo de API simples, certo? Em outras palavras, provavelmente as informações não podem ser acessados ​​por qualquer um que quer. Este erro é exatamente o que isso significa. Algumas APIs exigem certas permissões para acessar os seus dados. E APIs ainda mais avançados, como o Facebook um, exigirá determinadas permissões para fazer certas coisas. Eu posso ver esta informação básica sobre David Malan. Eu posso ver que ele é do sexo masculino e que vive em os EUA, mas eu realmente não posso ver nada além disso. Para contornar esta situação, por enquanto, o Facebook tem esta ferramenta agradável que é o gráfico API explorador, ea idéia de que é que você pode classificar de tornar-se permissões para se baseado em sua própria conta e depois ver as coisas que especificamente a sua conta pode ver. Por exemplo, se eu fizer graph.facebook.com/billyjanitsch/likes- Opa, eu acho que tem que revalidar meu token aqui. Okay. Se eu fizer isso de novo, ótimo, agora eu vejo que eu tenho esse objeto de volta que diz que eu gosto de macarrão piscina, que são na categoria Jogos e Brinquedos. Eu gosto de morsas, que estão na categoria animal. Estes são os meus gostos Facebook reais. Eles são meio constrangedor. Mas podemos ver esses dados são todos voltaram em JSON. É bastante legível. Em outras palavras, nós temos esse mapeamento de dados para algum tipo de matriz, e cada elemento dessa matriz é um HashMap que mapeia o nome de uma como a categoria e de um gosto. Cada um como tem uma identificação única. Há todos os tipos de coisas diferentes de dados que podemos obter, e se você está interessado em usar a API do Facebook para um projeto final, CS50 ou para qualquer coisa como que na verdade é bastante factível. Basicamente como você dar a volta à coisa de autenticação é o Facebook usa um sistema chamado OAuth, ou Open Authentication, e eu não quero entrar agora porque OAuth ou o tipo diferente de autenticação tende a variar muito entre diferentes APIs, para que eu pudesse passar um longo tempo passando por cima de cada um, mas eles são realmente bastante auto-explicativo. Se você Google Facebook API é muito legível. Há uma especificação todo. Por exemplo, esta é a documentação para a API do Facebook, e você pode ver que eu estou na página do usuário, para que eu possa aprender tudo sobre os diferentes tipos de coisas que estão disponíveis para obter os dados, tanto quanto e também as permissões diferentes que eu preciso, a fim de acessá-los. Como vimos, não precisamos de permissões para acessar o nome ou o sexo, mas além disso precisamos permissões para a maioria das coisas. Esta página, ou melhor, este site também irá lhe dizer como chegar um token para ser capaz de se autenticar. A maioria dos sistemas de autenticação usar algum tipo de token onde você receber esse valor único, que é uma cadeia muito longa e aleatória, e de que maneira eles podem associar o pedido que você está fazendo com você. Em outras palavras, eles sabem que você não está fazendo nada de suspeito com seus dados. Eles sabem exatamente o que você está recebendo. Eles também sabem que você tem permissão para ver as informações. Se você fez um aplicativo do Facebook e seu aplicativo tem certos usuários, e os usuários têm permitido que o app para acessar certas partes do seu perfil, então qualquer chave de API ou token que esse aplicativo está usando será capaz de acessar os dados para esses usuários. Isto pode parecer complicado, mas não é tão ruim, e se você quiser usar o Facebook Eu recomendo que você considerar a brincar com sua API. É muito legal, e você pode fazer um monte de coisas diferentes com ele. Se o usuário concede essas permissões que você pode até mesmo voltar para a API e dizer que eu quero, na verdade, colocar a parede do usuário, ou eu quero tê-los postar uma foto, e é por isso que em seu feed de notícias você começa às vezes essas coisas irritantes dizendo que seu amigo tenha visto este vídeo em algum tipo de site estranho ou algo parecido. Isso porque esse app foi concedido acesso para postar no mural da pessoa. A idéia geral, a API do Facebook é bastante complicado, mas também muito útil. Vale a pena experimentar se você ainda está procurando um projeto final. Outro conjunto de APIs que eu vou passar por cima de APIs é CS50. Deixe-me aproximar aqui. CS50 tem realmente juntar uma série de APIs que você pode usar para um projeto final ou apenas para qualquer coisa que você está fazendo. E eles estão principalmente relacionados Harvard, e variam a partir do menu HUDS, por exemplo, para este Harvard Eventos API, o que lhe permitirá aceder a uma lista de diferentes eventos que estão acontecendo em Harvard e esse tipo de coisa. E, assim, pode clicar em qualquer um deles e ter uma especificação para ele, que você vai ser capaz de encontrar para qualquer API, ea idéia é ele permite que você sabe, A, especificamente o de solicitar a API e como solicitá-la. Em outras palavras, se eu quiser que todos os eventos que estão acontecendo amanhã então eu tenho que, obviamente, dar-lhe essa data que eu quero em um determinado formato, e B, ele vai me dizer exatamente o que vai dar de volta para mim. Ele vai dizer que eu estou indo para retornar este objeto JSON, ou como você pode ver, há diferentes formatos. Você também pode retornar os dados como CSV, por exemplo. Mas você sabe exatamente como os dados vai olhar quando você recebe de volta então você pode esperar para fazer certas coisas com ele. Nós pode rolar para baixo e ver, por exemplo, se queremos consultar a API para obter um calendário, então podemos usar este URL especial e dar-lhe certos parâmetros que vão ser os dados que nós queremos exatamente. E da mesma forma, se queremos que os dados de volta em um determinado formato, então podemos pedir-lhe para transmitir os dados em um arquivo CSV, e isso é só outro parâmetro que estamos passando para o API. Muitas coisas legais para fazer lá. Eu definitivamente recomendaria verificar as APIs CS50. Eu vou olhar para esta API Alimentos Harvard, em especial para um pouco. Uma coisa que eu realmente concebido é este Harvard site Noms, que utiliza a API Food CS50 para recuperar o menu HUDS para o dia. E para as pessoas da escola de extensão, HUDS é o serviço de jantar em Harvard. O que você recebe é esta página que contém todas as refeições do dia, por isso vemos o almoço. Temos algumas categorias diferentes. Nós temos o feijão e da estação de grãos inteiros. Nós temos a estação de arroz integral. Podemos ver para brunch temos estes alimentos poucos. Se clicar sobre eles, então nós temos a informação nutricional. Você vê esta é a informação nutricional para grapefruit, caso você esteja se perguntando. E novamente, vamos para perscrutar a extremidade traseira um pouco aqui e ver exatamente o que isso está fazendo para obter esses dados. E isso acaba por não ser realmente muito complexo em tudo. Este arquivo parece um pouco confuso, mas tenha em mente que este está a lidar com o site inteiro, e se eu rolar para baixo vemos esta mudança função de dados. Agora, só para ficar claro, isso está escrito no CoffeeScript, que é uma linguagem que você provavelmente não tenha visto antes. Mas é muito legível, então eu vou passar por ela como se fosse pseudocódigo. Alterar data é uma função que vai levar neste valor, data e também vai levar em um primeiro, que não se preocupam com o máximo. Mas o importante é que tem esta data, e essa data é o dia que nós queremos pedir a todos os itens alimentares para. E então você vê que temos um pouco de sintaxe aqui, que é basicamente analisar essa data em um formato legível. Em outras palavras, o API exige a data em um formato determinado. Você não pode simplesmente dizer 16 de novembro de 2012 AD. Ele não vai saber o que fazer com isso. Ele quer a data em um formato específico. Tudo o que estamos fazendo aqui é dar-lhe exatamente o formato que, que é um valor de ano e, em seguida, um hífen, um valor de mês, outro hífen eo valor de data. E também dizer que queremos os dados para saída em JSON. Agora estamos fazendo este pedido AJAX, e como já referi anteriormente, jQuery tem esta super função AJAX útil, que tudo o que você precisa fazer é especificar alguns parâmetros para baixo aqui, e ele vai lhe dar de volta exatamente o que você quer. Nós estamos dizendo é que a URL que queremos ir é esta API Alimentos CS50, que temos a partir da especificação. Nós dizemos que queremos que os dados em JSON e que vamos dar-lhe esses dados que temos até aqui definidos. Este é o dia em que deseja que os itens alimentares para. E então tudo o que temos a fazer é definir algum tipo de função de sucesso, que é basicamente o que acontece quando a API retorna os dados. Em outras palavras, nós embalados todos os parâmetros que nós queremos, que neste caso é o dia que nós queremos que ele eo fato de que nós queremos em JSON, e enviou-o para a API, agora o API está dizendo, tudo bem, aqui está os seus dados, eu peguei de volta para você. Temos a função de sucesso, o que significa que uma vez que a API com sucesso retorna alguns dados, o que vamos fazer com ele? E verifica-se que tudo o que fazemos é chamar esta função menu de atualização com o que a API está de volta, para que possamos procurar que e ver que tudo o que estamos fazendo é usando um monte de nova sintaxe aqui para atualizar o HTML e inserir esses dados novos. O que permite é que temos essas setas de cada lado, e podemos clicar, e agora estamos olhando para os dados para o dia seguinte e novamente para o dia seguinte, e cada vez que está atualizando esse valor de data e consultando a API, voltar alguns dados e colocá-lo no site. Mais uma vez, você pode ver, super, super útil. Este aplicativo me levou algumas horas para cortar juntos, e eu tenho um pouco mais de experiência, obviamente, mas o seu projecto final, CS50 pode ser algo muito parecido com isso. APIs são super poderosa para a quantidade de esforço que tomam. A última coisa que eu vou passar por cima de algumas APIs é mais ampla. Eu não vou chegar tão longe para eles, tanto quanto o que fazem especificamente, mas vou lhe dar uma idéia do que está lá fora. 2 os realmente úteis, se você estiver interessado na análise de dados ou visualização ou qualquer coisa assim, são Freebase e Wikipedia. Wikipedia-presumivelmente todos sabem, é uma enciclopédia livre online, e ele realmente tem uma API, por isso, se você quiser, por exemplo, obter todos os textos e os artigos para polvo você pode facilmente fazer isso. Basta dizer hey, Wikipedia API, eu gostaria que os dados retornados como este, e eu gostaria que neste formato, eo artigo que eu gostaria é polvo, e muito rapidamente ele vai lhe dar de volta essa informação. Isso pode ser muito útil se você quiser fazer algum tipo de site isso é uma melhor visualização para a Wikipedia ou algo assim. Freebase é uma espécie de similar, embora seja um pouco mais difícil, tanto quanto API. Freebase é como a Wikipedia, em que é uma enciclopédia on-line que contém muitos e muitos dados diferentes sobre todos os tipos de temas diferentes, mas ele é armazenado em um banco de dados relacional, o que é ligeiramente diferente da Wikipedia. Wikipedia tem os seus artigos e artigos ligados a outros artigos, mas a maior parte, se você quiser os dados para o polvo, você vai para o artigo polvo, obter os dados, e você tem um monte de texto sobre os polvos, o que é ótimo. Freebase funciona de uma maneira um pouco mais complicada em que tudo está relacionado com um outro. Em outras palavras, se estamos à procura de polvo então ele tem um monte de categorias de associados. Por exemplo, é um animal, que vive debaixo d'água, ela tem uma temperatura corporal determinado. Eu não sei. E todas essas categorias são links para outros lugares onde você pode ir a ver as coisas com mesma categoria. Em outras palavras, o polvo conjunto de dados que contém um link para o conjunto de dados para todos os animais, e que me deixou mover no banco de dados muito rapidamente. Isto pode ser muito útil se você está fazendo algo como comparações. Em outras palavras, dada uma certa coisa, que você quer ver o que mais está relacionado e ver o que mais ele não está relacionado. Esse tipo de coisa. Pode ser útil em um número de maneiras. Se você está procurando por mais de um desafio e de ser capaz de fazer algumas coisas mais complexas Eu consideraria dar uma olhada na API Freebase. Mas em grande parte, a Wikipedia é um lugar muito simples para ir tão longe como a obtenção de informações. Outro lugar que eu vou olhar é o Last.fm, e eu estou indo realmente para ir para o site no caso de algumas pessoas não estão familiarizados, mas Last.fm é basicamente uma música gostos e site recomendações. Você pode fazer uma conta. Você pode começar a carregar música de seu player de música para o site, e, basicamente, ele vai começar a dar-lhe recomendações de músicas com base no que você ouve. Por exemplo, se você vai para o seu perfil de página é de minas você pode ver que você tem uma lista de recentemente ouviu faixas. Você pode ver gerais artistas favoritos, todos esse tipo de coisa, e, novamente, há uma API de grande atrás Last.fm,  e você pode usá-lo para fazer muitas e muitas coisas legais. Por exemplo, eu vou para a página de um amigo que tem este site Last.fm Ferramentas. Esta é realmente uma outra plataforma que é construído sobre a API do Last.fm, e faz uma série de bonitas coisas interessantes. Se eu entrar com meu nome de usuário, por exemplo, Eu posso pedir para ele gerar uma nuvem de tags, por exemplo, eo que isso vai fazer é me dar de volta uma imagem de todos os diferentes gêneros e esse tipo de coisa que eu gosto de ouvir. Como é que está fazendo isso? Muito basicamente está dizendo para a API do Last.fm aqui está este usuário. Eu gostaria de saber o gênero de cada música que já ouviu, e você pode fazer isso fazendo uma bem simples chamada AJAX para a API do Last.fm. Você receberá de volta uma grande lista e, então, obviamente, algumas outras coisas está sendo feito para transformá-lo em uma nuvem de palavras, mas você pode ver geral é muito fácil de acessar e muito fácil de usar. Muito bom para uma série de coisas. Eu acho que isso é tudo que eu vou dizer em geral. Uma última coisa que eu vou falar sobre APIs em geral é que você vai, por vezes, em algo chamado limite de taxa, ea idéia de limitação de taxa é que você não quer abusar APIs. Em outras palavras, é muito bom que muitos destes sites têm APIs que você pode ir e utilizar gratuitamente. No entanto, se você está fazendo milhões ou bilhões de solicitações por dia, por exemplo, se você está preso em um loop infinito que é infinitamente consultando algum tipo de API e recebendo de volta uma quantidade enorme de dados, obviamente que não é bom, então o que um monte de APIs fazer é ter esta taxa limitante que diz que você só pode fazer 1.000 pedidos por dia e por endereço IP ou algo assim. E se você está fazendo um monte de testes e esse tipo de coisa, às vezes você correr para isso, e de repente ele desliga-lo fora e dizer não, eu não vou te dar mais dados. O que você quer fazer é jogar pelas regras. Você quer ter certeza de que você leia a especificação API cuidado. Se ele tem certas regras ligadas a ele, como você só pode fazer consultas X por dia ou você pode acessar apenas uma parte do banco de dados de um determinado número de vezes ou algo assim que você quer ter certeza de que você ater a isso. Enquanto você jogar dentro dessas regras que você provavelmente vai ter um tempo muito bom usando APIs. Seu takeaway geral é APIs são muito, muito útil. Há uma API para quase qualquer serviço web grande lá fora. Praticamente qualquer parte do Ferramentas do Google Suite, Google Maps, Google Earth, GMail, Google Calendar, todas essas coisas têm APIs. Você pode usá-los com os dados de começar a partir do servidor e enviar dados para o servidor. Em outras palavras, se você quiser fazer uma aplicação de calendário que pode atualizar Calendário de alguém do Google, há uma API para isso. Se você quiser fazer algo que vai te dizer onde a localização de um determinado endereço é que você pode usar a API do Google Maps para isso. APIs são fantasticamente útil, e eles estão em toda parte. Se você estiver interessado em algum tipo de idéia, provavelmente há uma API relacionado que você pode utilizar para obter uma grande quantidade de dados muito rapidamente e de maneira muito simples. Se você ainda está procurando um projeto ou se você só quer brincar com algo em geral, APIs são definitivamente vale a pena fazer. Obrigado, e eu estou feliz em responder qualquer pergunta que vocês possam ter. Ok, muito obrigado. [CS50.TV]