1 00:00:00,000 --> 00:00:02,480 [Powered by Google Translate] [Seminário] [Introdução de um programador de APIs] 2 00:00:02,480 --> 00:00:04,059 [Billy Janitsch] [Harvard University] [Tommy MacWilliam] 3 00:00:04,059 --> 00:00:08,220 [Esta é CS50.] [CS50.TV] 4 00:00:08,220 --> 00:00:12,100 >> Oi, todos, eu sou o Billy, e hoje eu vou estar falando sobre APIs, 5 00:00:12,100 --> 00:00:15,220 ou interfaces de programação de aplicativos, 6 00:00:15,220 --> 00:00:20,040 especificamente no contexto da CS50 projetos finais e esse tipo de coisa. 7 00:00:20,040 --> 00:00:22,490 Em geral o que é uma API? 8 00:00:22,490 --> 00:00:25,530 Em termos muito gerais, é uma espécie de homem de meia que permite que duas peças 9 00:00:25,530 --> 00:00:28,610 de software para comunicar uns com os outros. 10 00:00:28,610 --> 00:00:32,530 Isso é um tipo de definição muito ampla e não é tão relevante para o que estamos olhando. 11 00:00:32,530 --> 00:00:35,450 O que realmente queremos é uma espécie de meio termo útil 12 00:00:35,450 --> 00:00:40,570 para se comunicar com algum tipo de banco de dados em algum lugar. 13 00:00:40,570 --> 00:00:43,310 >> Aqui está um gráfico, e, basicamente, a idéia é que 14 00:00:43,310 --> 00:00:46,790 nós somos uma aplicação, e queremos obter dados a partir de um banco de dados, 15 00:00:46,790 --> 00:00:49,570 mas não deseja consultar o banco de dados diretamente. 16 00:00:49,570 --> 00:00:52,710 Em vez disso, quero passar por esse tipo de homem médio, a API. 17 00:00:52,710 --> 00:00:55,440 A idéia por trás disso é os números 2 e 3 do gráfico 18 00:00:55,440 --> 00:00:57,750 são ambos vai ser muito complicado e confuso. 19 00:00:57,750 --> 00:00:59,960 Em outras palavras, quando a API está consultando o banco de dados, 20 00:00:59,960 --> 00:01:03,300 ele provavelmente vai estar usando tabelas SQL e todos esse tipo de coisa, 21 00:01:03,300 --> 00:01:05,489 e aprendemos um pouco sobre isso no CS50, mas no geral, 22 00:01:05,489 --> 00:01:07,590 você percebeu que é um pouco de dor. 23 00:01:07,590 --> 00:01:10,590 Ele fica muito, muito complicado e confuso, especialmente quando você está fazendo 24 00:01:10,590 --> 00:01:12,530 consultas complexas e esse tipo de coisa. 25 00:01:12,530 --> 00:01:15,960 >> O que realmente queremos é algum tipo de forma útil e simples 26 00:01:15,960 --> 00:01:19,780 para obter esses dados, e essa é a idéia por trás de números 1 e 4 do gráfico. 27 00:01:19,780 --> 00:01:23,600 Em outras palavras, queremos uma maneira muito simples de dizer o que a API para obter para nós 28 00:01:23,600 --> 00:01:27,760 e uma maneira realmente simples de se obter os dados de volta. 29 00:01:27,760 --> 00:01:33,020 Há um modo principal, que normalmente é de que os dados enviados e recebidos, 30 00:01:33,020 --> 00:01:36,490 que é JSON ou JavaScript Object Notation. 31 00:01:36,490 --> 00:01:40,370 Que pode variar um pouco, tanto quanto como você enviar a solicitação para a API. 32 00:01:40,370 --> 00:01:43,210 Em outras palavras, se você quer alguma certa quantidade de dados, 33 00:01:43,210 --> 00:01:46,670 como você dizer a API para obter os dados podem variar um pouco. 34 00:01:46,670 --> 00:01:49,210 Normalmente, envolve a realização de algum tipo de solicitação de rede. 35 00:01:49,210 --> 00:01:53,130 Em outras palavras, o acesso a algum tipo de URL que vai contar a API 36 00:01:53,130 --> 00:01:56,190 exatamente o que você quer, mas os dados são quase sempre enviados de volta, 37 00:01:56,190 --> 00:01:59,530 em outras palavras, o número 4 JSON. 38 00:01:59,530 --> 00:02:01,030 >> O que é JSON exatamente? 39 00:02:01,030 --> 00:02:03,030 Como eu disse, JavaScript Object Notation. 40 00:02:03,030 --> 00:02:07,090 É basicamente o padrão universal para transmissão e recepção de dados. 41 00:02:07,090 --> 00:02:11,410 A idéia é que você tem essas três categorias de coisas. 42 00:02:11,410 --> 00:02:13,540 Você tem matrizes, HashMaps, e primitivos. 43 00:02:13,540 --> 00:02:16,580 Matrizes e HashMaps você olhou um pouco no CS50, 44 00:02:16,580 --> 00:02:19,870 mas você espécie de obtido um sentido muito estrito do que eles são. 45 00:02:19,870 --> 00:02:22,780 Em outras palavras, com matrizes que você sabe que eles estão tipo encadernado, 46 00:02:22,780 --> 00:02:26,560 assim você só tem uma espécie de tipo que vai ao longo da matriz inteira. 47 00:02:26,560 --> 00:02:29,310 JSON é muito mais tolerante com esse tipo de coisa. 48 00:02:29,310 --> 00:02:33,590 Basicamente, a idéia é que você construir este objeto, 49 00:02:33,590 --> 00:02:36,270 que pode ser composto de qualquer uma destas três coisas 50 00:02:36,270 --> 00:02:39,470 e pode ser composto de vários dos entes, e eles podem ser aninhados. 51 00:02:39,470 --> 00:02:42,110 >> Aqui é uma espécie de um exemplo de JSON, 52 00:02:42,110 --> 00:02:47,910 que é essas chaves aqui representam o HashMap, 53 00:02:47,910 --> 00:02:51,400 e um HashMap é basicamente um mapeamento a partir de algum tipo de chave 54 00:02:51,400 --> 00:02:53,340 a algum tipo de valor. 55 00:02:53,340 --> 00:02:56,440 Você vai ver aqui que temos a chave propriedades, 56 00:02:56,440 --> 00:02:59,600 e que está mapeando para uma matriz, que é essa coisa toda. 57 00:02:59,600 --> 00:03:04,120 Vemos um outro elemento do HashMap, que é este isAwesome chave, 58 00:03:04,120 --> 00:03:07,370 que mapeia para um valor primitivo de verdade, em outras palavras, um booleano. 59 00:03:07,370 --> 00:03:09,420 Primitivas podem ser strings. Eles podem ser números inteiros. 60 00:03:09,420 --> 00:03:11,960 Eles podem ser bools, qualquer coisa assim. 61 00:03:11,960 --> 00:03:18,410 E você vê o conteúdo deste matriz que aponta para propriedades tem duas cordas na mesma, 62 00:03:18,410 --> 00:03:20,050 auto-similar e maravilhoso. 63 00:03:20,050 --> 00:03:27,410 Essas são duas propriedades de JSON, e vemos que o JSON é impressionante. 64 00:03:27,410 --> 00:03:30,060 Para olhar que um pouco mais de perto eu vou construir 65 00:03:30,060 --> 00:03:32,870 um exemplo mais complexo de JSON aqui. 66 00:03:32,870 --> 00:03:37,000 >> Vamos começar com uma matriz, por exemplo, apenas uma matriz vazia. 67 00:03:37,000 --> 00:03:39,180 Mas isso é tipo de chato, por isso estamos indo para preenchê-lo um pouco, 68 00:03:39,180 --> 00:03:43,420 e como eu disse, as matrizes no JSON são do tipo vinculado, 69 00:03:43,420 --> 00:03:46,400 para que pudéssemos também ter uma seqüência aqui, que é oi, 70 00:03:46,400 --> 00:03:49,330 e este é outro elemento dessa matriz. 71 00:03:49,330 --> 00:03:53,450 E do mesmo modo, poderíamos adicionar um hashmapping aqui, que vai ter um mapeamentos poucos. 72 00:03:53,450 --> 00:04:00,470 Ele vai ter um mapeamento de nome para o Billy string. 73 00:04:00,470 --> 00:04:04,590 Nós temos um mapeamento de nome para Billy, e nós temos um mapeamento de 74 00:04:04,590 --> 00:04:10,860 cor favorita para azul. 75 00:04:10,860 --> 00:04:12,700 Isso é basicamente um bom exemplo de JSON. 76 00:04:12,700 --> 00:04:18,160 É o tipo de entra-ops, precisa de uma vírgula ali, todas as diferentes partes do mesmo. 77 00:04:18,160 --> 00:04:21,140 Mais uma vez, não é obrigado a digitar todos, de modo que você pode ter qualquer tipo de tipos de 78 00:04:21,140 --> 00:04:24,710 dentro de tudo o que quiser, ea idéia é que é auto-similar. 79 00:04:24,710 --> 00:04:28,830 Em outras palavras, isso aqui é um objeto JSON, como é essa coisa toda, 80 00:04:28,830 --> 00:04:33,200 como é apenas isso, então você pode ter um primitivo ser um objeto, 81 00:04:33,200 --> 00:04:35,680 uma matriz ser um objeto ou um HashMap ser um objeto. 82 00:04:35,680 --> 00:04:40,270 >> Como você pode tipo de ver, JSON é muito, muito útil na medida em que é tão versátil. 83 00:04:40,270 --> 00:04:45,860 Você pode ter todos os possíveis dados que você pode conceber armazenados em JSON. 84 00:04:45,860 --> 00:04:47,900 Isso o torna uma linguagem muito agradável de usar com APIs 85 00:04:47,900 --> 00:04:50,770 porque praticamente significa que não importa o que os dados que você quer 86 00:04:50,770 --> 00:04:54,270 lá vai haver alguma maneira de recuperá-lo em JSON. 87 00:04:54,270 --> 00:04:58,600 Algumas propriedades que fazem JSON particularmente bom para este tipo de coisa. 88 00:04:58,600 --> 00:05:02,270 Como você pode ver, em comparação com um monte de coisas que você está trabalhando com a CS50 89 00:05:02,270 --> 00:05:06,040 é comparativamente muito fácil de ler e também muito fácil de escrever. 90 00:05:06,040 --> 00:05:09,700 Você pode recuar para fora se você quiser, como eu estava fazendo nesse exemplo, 91 00:05:09,700 --> 00:05:12,990 que lhe dá uma versão muito agradável que você pode ver muito bem. 92 00:05:12,990 --> 00:05:17,150 Mas além disso, também é fácil de ler e escrever para um computador. 93 00:05:17,150 --> 00:05:19,870 Em outras palavras, é fácil de analisar e fácil de codificar, 94 00:05:19,870 --> 00:05:23,820 o que significa que é muito fácil, tanto quanto a leitura de dados está em causa, 95 00:05:23,820 --> 00:05:26,460 e JSON pode ser gerado muito rapidamente. 96 00:05:26,460 --> 00:05:30,300 >> É também muito fácil de acessar diferentes partes do JSON e esse tipo de coisa. 97 00:05:30,300 --> 00:05:33,320 Isso é bom, e, além disso, o fato de que é auto-similar, 98 00:05:33,320 --> 00:05:36,090 em outras palavras, o fato de que você pode ter dentro de JSON JSON dentro JSON 99 00:05:36,090 --> 00:05:40,040 é muito bom para armazenamento de dados. 100 00:05:40,040 --> 00:05:45,490 Outra parte que geralmente é muito útil no trabalho com APIs é jQuery. 101 00:05:45,490 --> 00:05:49,290 Você aprendeu um pouco de JavaScript, que é uma boa forma 102 00:05:49,290 --> 00:05:53,710 para manipular HTML e CSS dentro de um site. 103 00:05:53,710 --> 00:05:57,190 Mas pode tipo de ser uma dor de código em JavaScript puro, 104 00:05:57,190 --> 00:05:59,810 em grande parte, porque o JavaScript é uma linguagem muito detalhado. 105 00:05:59,810 --> 00:06:03,020 Você tem que aprender um monte de sintaxe, e apenas para fazer coisas muito simples 106 00:06:03,020 --> 00:06:07,590 ele tem um monte de código, portanto, é uma biblioteca jQuery para JavaScript. 107 00:06:07,590 --> 00:06:09,800 Em outras palavras, é um arquivo JavaScript que você pode carregar 108 00:06:09,800 --> 00:06:12,730 e então usar as funções jQuery para fazer certas coisas. 109 00:06:12,730 --> 00:06:15,670 JQuery e basicamente faz a sua vida muito mais fácil. 110 00:06:15,670 --> 00:06:20,390 Ele simplifica o que levaria centenas de linhas em JavaScript para baixo algumas linhas em jQuery. 111 00:06:20,390 --> 00:06:24,430 >> Ele é especialmente útil se você estiver usando APIs porque geralmente 112 00:06:24,430 --> 00:06:27,600 como você vai estar acessando APIs é fazendo solicitações de AJAX, 113 00:06:27,600 --> 00:06:30,130 e eu acredito que David mencionou em palestra que solicitações de AJAX 114 00:06:30,130 --> 00:06:33,120 são geralmente quando você está fazendo uma solicitação de rede para algum tipo de servidor 115 00:06:33,120 --> 00:06:37,760 e voltar algum tipo de dados e atualização de uma página instantaneamente. 116 00:06:37,760 --> 00:06:41,840 Considerando que, em JavaScript simples que levaria números loucos de linhas 117 00:06:41,840 --> 00:06:44,620 para validar todos os cabeçalhos e fazer todo esse tipo de coisa, 118 00:06:44,620 --> 00:06:46,810 jQuery tem uma função muito simples chamado AJAX, 119 00:06:46,810 --> 00:06:51,760 e tudo que você tem que fazer em AJAX é dar os parâmetros que você quer dar a API, 120 00:06:51,760 --> 00:06:56,830 a localização da API e qualquer tipo adicional de opções que você deseja configurar. 121 00:06:56,830 --> 00:07:02,480 É muito, muito bom e muito útil para este tipo de coisa. 122 00:07:02,480 --> 00:07:06,970 Isso é tudo o que precisamos para começar a receber nossas mãos sujas em APIs. 123 00:07:06,970 --> 00:07:10,220 >> Eu vou trazer alguns exemplos e explorar suas propriedades diferentes 124 00:07:10,220 --> 00:07:13,150 e por que eles são úteis para diferentes tipos de coisas. 125 00:07:13,150 --> 00:07:15,570 A primeira coisa que vai realmente mostrar a você é algo que eu estou trabalhando em 126 00:07:15,570 --> 00:07:18,310 no meu laboratório de pesquisa, que é um visualizador de ngram, 127 00:07:18,310 --> 00:07:23,270 e, basicamente, a idéia de um visualizador de ngram é que você pode procurar algum tipo de palavra 128 00:07:23,270 --> 00:07:28,840 ou frase e ver quantas vezes ele apareceu em um determinado conjunto de texto ao longo do tempo. 129 00:07:28,840 --> 00:07:33,160 Este exemplo aqui é o conjunto de dados de bebês 130 00:07:33,160 --> 00:07:36,480 que nasceu em Nova York entre 1920 e 2000. 131 00:07:36,480 --> 00:07:40,090 Podemos pesquisar, por exemplo, para o nome de Jennifer, 132 00:07:40,090 --> 00:07:44,400 e vemos que o pré-1960 realmente não foi usada tanto assim, 133 00:07:44,400 --> 00:07:48,900 e depois como entramos em anos posteriores que está se tornando cada vez mais utilizado. 134 00:07:48,900 --> 00:07:53,680 Nós também podemos fazer comparações, por isso, se compararmos Jennifer, por exemplo, Thomas, 135 00:07:53,680 --> 00:07:56,520 podemos ver Thomas tem sido bastante prevalente ao longo da história, 136 00:07:56,520 --> 00:07:58,780 enquanto que Jennifer é um nome mais recente. 137 00:07:58,780 --> 00:08:00,590 Nós podemos fazer esse tipo de coisa. 138 00:08:00,590 --> 00:08:02,460 >> Como funciona essa aplicação? 139 00:08:02,460 --> 00:08:06,030 Basicamente, funciona através de uma API. 140 00:08:06,030 --> 00:08:08,660 Em outras palavras, podemos ter certos parâmetros aqui. 141 00:08:08,660 --> 00:08:11,360 Nós temos os parâmetros do que estamos realmente buscando, 142 00:08:11,360 --> 00:08:13,720 quais são esses nomes, e então nós temos algumas propriedades de outros, 143 00:08:13,720 --> 00:08:16,570 como o eixo Y e o eixo dos x. 144 00:08:16,570 --> 00:08:18,440 Você pode ver, temos algumas opções diferentes, tanto quanto o 145 00:08:18,440 --> 00:08:20,860 resolução de tempo de usar e que tipo de coisa. 146 00:08:20,860 --> 00:08:26,700 Temos essas opções, tanto quanto os dados que nós queremos realmente do banco de dados, 147 00:08:26,700 --> 00:08:29,400 e queremos obter os dados de volta, de alguma forma útil. 148 00:08:29,400 --> 00:08:34,020 Normalmente, se estivéssemos consultando o banco de dados diretamente seria classificar de ser uma dor de fazer 149 00:08:34,020 --> 00:08:38,970 porque presumivelmente dados sobre nomes de bebê vive em algum banco de dados em algum lugar, 150 00:08:38,970 --> 00:08:42,789 e seria muito complicado ter que consultá-lo manualmente 151 00:08:42,789 --> 00:08:45,830 e decidir exatamente quais dados para retornar. 152 00:08:45,830 --> 00:08:49,300 Em outras palavras, só se preocupam com Jennifer e Thomas, neste caso, 153 00:08:49,300 --> 00:08:53,410 e só se preocupam em um determinado eixo e tudo isso tipo de coisa. 154 00:08:53,410 --> 00:08:55,720 >> Como vamos resolver isso? 155 00:08:55,720 --> 00:09:01,200 Para cavar esta API um pouco mais eu vou lhe mostrar um outro exemplo desta plataforma 156 00:09:01,200 --> 00:09:04,490 , que utiliza um conjunto ligeiramente diferente de dados. 157 00:09:04,490 --> 00:09:09,950 Este conjunto de dados, em vez de nomes de bebês, é realmente apenas o todo 158 00:09:09,950 --> 00:09:12,460 imprimir dados de publicação da Open Library, 159 00:09:12,460 --> 00:09:18,410 que é uma fonte gigante de textos publicados ao longo dos últimos 100 anos ou mais. 160 00:09:18,410 --> 00:09:23,540 A idéia é que temos esse compository de milhões e milhões de texto, 161 00:09:23,540 --> 00:09:27,420 que agora podemos procurar por palavras e frases diferentes pol 162 00:09:27,420 --> 00:09:30,840 Aqui está um exemplo que varia um pouco diferente do exemplo anterior 163 00:09:30,840 --> 00:09:33,350 Mostrei-lhe, o que é que temos essas três consultas de pesquisa, 164 00:09:33,350 --> 00:09:36,290 guerra, guerra, ea palavra francesa para a guerra, que é guerre. 165 00:09:36,290 --> 00:09:40,380 E nós estamos buscando dentro de três diferentes seções do banco de dados total. 166 00:09:40,380 --> 00:09:45,080 Em outras palavras, nesta primeira consulta que estamos apenas à procura nos EUA, 167 00:09:45,080 --> 00:09:51,150 na segunda só no Reino Unido, eo terceiro apenas de obras publicadas em França. 168 00:09:51,150 --> 00:09:53,120 Vemos alguns padrões interessantes emergem. 169 00:09:53,120 --> 00:09:58,180 Por exemplo, podemos ver direito por aqui, que- 170 00:09:58,180 --> 00:10:02,410 opa, eu errei o eixo um pouco, mas você pode ver direito nessa faixa aqui 171 00:10:02,410 --> 00:10:05,730 em torno da Guerra Civil, há um aumento muito grande na edição americana 172 00:10:05,730 --> 00:10:08,340 mas não como um grande aumento nos outros dois, e isso é, obviamente, porque 173 00:10:08,340 --> 00:10:10,880 a Guerra Civil Americana estava acontecendo naquele momento. 174 00:10:10,880 --> 00:10:13,890 >> Podemos ver algumas coisas legais lá, 175 00:10:13,890 --> 00:10:17,070 mas o que realmente importa é como conseguimos esses dados. 176 00:10:17,070 --> 00:10:21,320 Vou levá-lo atrás das cenas neste aplicativo em um pouco. 177 00:10:21,320 --> 00:10:24,540 Um truque é se você está trabalhando com o local e tipo de querer saber 178 00:10:24,540 --> 00:10:27,430 o que está acontecendo nos bastidores, você pode abrir as ferramentas de desenvolvedor. 179 00:10:27,430 --> 00:10:30,200 Eu vou estar usando ferramentas de desenvolvedor do Chrome, e para chegar aos 180 00:10:30,200 --> 00:10:35,160 você pode fazer mudança de controle, J, e que leva você para o console JavaScript. 181 00:10:35,160 --> 00:10:37,420 Há algumas abas aqui. 182 00:10:37,420 --> 00:10:39,680 Eles podem ser muito úteis em circunstâncias diferentes, mas eu me importo com a rede 183 00:10:39,680 --> 00:10:44,150 guia, agora, e eu realmente tenho que atualizar para obter esse trabalho. 184 00:10:44,150 --> 00:10:50,180 Oh, desculpe. 185 00:10:50,180 --> 00:10:52,320 Ela gosta de dar um exemplo aleatório. 186 00:10:52,320 --> 00:10:54,700 Ok, vamos usar este exemplo em vez seguida. 187 00:10:54,700 --> 00:11:01,330 >> A idéia é que há esta API aqui, 188 00:11:01,330 --> 00:11:05,330 e você pode ver exatamente o que a API está retornando. 189 00:11:05,330 --> 00:11:10,220 Isto é o que o aplicativo está recebendo de volta a partir da API ter enviado esse pedido. 190 00:11:10,220 --> 00:11:13,680 Deixe-me ampliar um pouco, 191 00:11:13,680 --> 00:11:18,340 e podemos ver, basicamente, é apenas uma série de pares de valores-chave em JSON. 192 00:11:18,340 --> 00:11:23,220 Em outras palavras, nós temos este hashmap aqui que está o mapeamento de valores. 193 00:11:23,220 --> 00:11:26,440 Em outras palavras, é o mapeamento anos para valores. 194 00:11:26,440 --> 00:11:32,600 Em 1765 qualquer palavra que inicialmente procurado é usado 90 vezes 195 00:11:32,600 --> 00:11:35,810 de 1 milhão, por isso estamos recebendo de volta a este resultado. 196 00:11:35,810 --> 00:11:40,280 Não é exatamente JSON uma vez que temos este cabeçalho resultado pouco aqui, 197 00:11:40,280 --> 00:11:45,630 mas aviso que este objeto inteiro aqui é apenas um grande grande blob JSON. 198 00:11:45,630 --> 00:11:51,070 Nós temos uma matriz aqui, que contém esse elemento todo, 199 00:11:51,070 --> 00:11:55,590 e você pode ver que todo elemento termina aí, e depois temos outro grande elemento 200 00:11:55,590 --> 00:11:59,430 que vai todo o caminho até o fim, e que termina aqui. 201 00:11:59,430 --> 00:12:02,200 Temos um conjunto muito grande com dois objetos na mesma, 202 00:12:02,200 --> 00:12:04,630 e cada um desses objetos é um HashMap. 203 00:12:04,630 --> 00:12:07,340 Você pode ver em cada uma dessas HashMaps temos um mapeamento 204 00:12:07,340 --> 00:12:12,700 deste valor do índice para o valor 0 e esse valor para outro hashmap, 205 00:12:12,700 --> 00:12:18,360 que novamente é o mapeamento de valores do eixo X para os valores do eixo Y. 206 00:12:18,360 --> 00:12:20,970 >> Você pode ver JSON fica um pouco complicado, mas no geral, 207 00:12:20,970 --> 00:12:24,190 é realmente muito útil, e é muito fácil de acessar em comparação com 208 00:12:24,190 --> 00:12:27,390 outras formas de notação. 209 00:12:27,390 --> 00:12:30,550 Tanto quanto o que na verdade estamos enviando dados para a API para obter, 210 00:12:30,550 --> 00:12:34,690 Eu estou indo para ir para a extremidade traseira um pouco aqui. 211 00:12:34,690 --> 00:12:39,850 Este é o arquivo JavaScript grande que está lidando com todas as interações do aplicativo web, 212 00:12:39,850 --> 00:12:44,810 e por isso não me importo com a maior parte deste, mas se preocupam com alguns deles. 213 00:12:44,810 --> 00:12:47,410 Por exemplo, nós nos preocupamos com esta função BuildQuery, 214 00:12:47,410 --> 00:12:50,670 ea idéia de esta função é, basicamente, ele está olhando ao redor da página, 215 00:12:50,670 --> 00:12:53,750 descobrir o que o usuário quer consultar, em outras palavras, 216 00:12:53,750 --> 00:12:57,090 verificar as caixas de entrada onde eles seus termos de busca, 217 00:12:57,090 --> 00:13:01,380 verificação da Y diferente e os valores do eixo X que você escolheu e de todos que tipo de coisa, 218 00:13:01,380 --> 00:13:06,650 e vai cuspir este valor da consulta, que pode, então, enviar para o API. 219 00:13:06,650 --> 00:13:09,180 >> Isso parece complicado, e é muito complicado 220 00:13:09,180 --> 00:13:18,090 mas o que eu vou fazer-na verdade, eu já estou fazendo isso, o que é ótimo, 221 00:13:18,090 --> 00:13:21,640 é que eu estou indo para obter o console para imprimir exatamente que valor da consulta 222 00:13:21,640 --> 00:13:28,110 que ele está enviando fora para o API. 223 00:13:28,110 --> 00:13:30,870 Isso é realmente bem aqui. Desculpe, ele gera um monte de coisas. 224 00:13:30,870 --> 00:13:33,690 Mas isso é o que importa, esse objeto aqui. 225 00:13:33,690 --> 00:13:35,300 Este é o objeto da consulta. 226 00:13:35,300 --> 00:13:40,670 Em outras palavras, é exatamente isso que a aplicação web está enviando para a API, 227 00:13:40,670 --> 00:13:45,730 e então vamos olhar para dentro um pouco, e vemos que temos alguns valores aqui. 228 00:13:45,730 --> 00:13:48,710 Vemos que temos este tipo de contagem, que é ocorrências por milhão de palavras, 229 00:13:48,710 --> 00:13:51,460 que é exatamente o que nós escolhemos no eixo Y aqui. 230 00:13:51,460 --> 00:13:53,740 É onde que vem. 231 00:13:53,740 --> 00:13:58,010 Temos um banco de dados de valor, o que significa que há algum determinado banco de dados 232 00:13:58,010 --> 00:14:01,610 que esses dados são vivendo, e queremos acessar esses dados especificamente 233 00:14:01,610 --> 00:14:04,950 ao contrário de nomes do bebê de dados, por exemplo. 234 00:14:04,950 --> 00:14:08,320 Então, temos este valor grupos, 235 00:14:08,320 --> 00:14:12,090 que está dizendo que quer procurar por ano em vez de 236 00:14:12,090 --> 00:14:16,030 qualquer outro eixo X valor. 237 00:14:16,030 --> 00:14:19,040 Então, temos um método, que algumas APIs vai fazer várias coisas. 238 00:14:19,040 --> 00:14:22,360 Em outras palavras, essa API também pode retornar outros tipos de dados, 239 00:14:22,360 --> 00:14:27,740 mas, neste caso, queremos que o mapeamento dos valores do eixo X para valores do eixo Y. 240 00:14:27,740 --> 00:14:30,730 Isso é o que está dizendo a ele para fazer lá, 241 00:14:30,730 --> 00:14:35,020 e nós temos esta busca limites matriz, que contém dois valores. 242 00:14:35,020 --> 00:14:40,720 O primeiro é o que vemos aqui, o que é de todos os valores 243 00:14:40,720 --> 00:14:43,020 contido dentro dessa primeira caixa pequena na parte superior. 244 00:14:43,020 --> 00:14:47,570 >> Em outras palavras, nós queremos olhar para a batalha palavra, e nós queremos filtrar 245 00:14:47,570 --> 00:14:51,920 por textos em inglês dentro da literatura americana. 246 00:14:51,920 --> 00:14:54,590 Temos este país, que é EUA. 247 00:14:54,590 --> 00:14:59,130 Nós temos uma linguagem, que é o Inglês, por isso temos todas essas peças diferentes 248 00:14:59,130 --> 00:15:02,690 que estão todos dizendo a API exatamente o que queremos. 249 00:15:02,690 --> 00:15:04,940 Nós não sabemos o que os dados que recebemos de volta é ainda, 250 00:15:04,940 --> 00:15:10,970 mas sabemos que os dados vai ter uma certa forma. 251 00:15:10,970 --> 00:15:13,650 Este exemplo é uma espécie de no lado complicado, 252 00:15:13,650 --> 00:15:16,180 e você não seria necessariamente usando uma API deste complexo, 253 00:15:16,180 --> 00:15:20,600 mas isso é para mostrar-lhe o alcance e poder do que APIs pode fazer. 254 00:15:20,600 --> 00:15:24,980 Em outras palavras, usando um sistema de consulta relativamente simples, temos basicamente uma caixa de entrada 255 00:15:24,980 --> 00:15:29,490 com um seletores de alguns outros em lugares diferentes. 256 00:15:29,490 --> 00:15:32,010 >> Deixe-me o zoom aqui. 257 00:15:32,010 --> 00:15:37,720 Nós temos uma caixa de entrada com algumas seleções de metadados diferentes, 258 00:15:37,720 --> 00:15:40,610 e temos eixo Y e seleções eixo x. 259 00:15:40,610 --> 00:15:42,830 Nós realmente não têm campos que muitos, 260 00:15:42,830 --> 00:15:46,210 e podemos ver muito facilmente somos capazes de consultar algum tipo de API 261 00:15:46,210 --> 00:15:48,510 e obter dados de volta e, em seguida, colocá-lo em este gráfico, 262 00:15:48,510 --> 00:15:52,080 que é, então, vai exibi-lo em uma forma útil. 263 00:15:52,080 --> 00:15:54,970 Olhar para outro exemplo que pode ser um pouco mais familiar para vocês 264 00:15:54,970 --> 00:15:56,510 vamos voltar para o Facebook. 265 00:15:56,510 --> 00:15:59,440 API do Facebook é chamado de Gráfico Facebook, 266 00:15:59,440 --> 00:16:04,390 e, basicamente, o que significa que é o Facebook se vê como esta enorme banco de dados 267 00:16:04,390 --> 00:16:08,000 de lotes de peças diferentes que têm certas relações entre si. 268 00:16:08,000 --> 00:16:11,070 Em outras palavras, eu sou um usuário no Facebook, então eu tenho um perfil, 269 00:16:11,070 --> 00:16:14,310 e I também têm certos amigos, e cada um deles tem um perfil, 270 00:16:14,310 --> 00:16:17,580 e cada um dos meus amigos tem uma parede, que tem diferentes comentários sobre ele, 271 00:16:17,580 --> 00:16:20,800 e cada um desses comentários tem gostos e de todos que tipo de coisa. 272 00:16:20,800 --> 00:16:23,100 >> Há lotes de diferentes partes para o Facebook. 273 00:16:23,100 --> 00:16:26,670 É uma API extremamente complexo, e há toneladas que você pode fazer com ele, 274 00:16:26,670 --> 00:16:28,450 mas na verdade é muito simples de usar. 275 00:16:28,450 --> 00:16:33,680 Vou começar por ir a graph.facebook.com / billyjanitsch, 276 00:16:33,680 --> 00:16:38,430 que é o meu nome da conta única, e seu nome de conta ou será 277 00:16:38,430 --> 00:16:43,710 algum tipo de palavra, se você escolheu, ou que poderia ser apenas uma seqüência de números. 278 00:16:43,710 --> 00:16:46,360 O que temos de volta é uma informação bastante básico. 279 00:16:46,360 --> 00:16:50,460 Vemos que eu tenho um nome, que é Billy, um sobrenome, que é Janitsch. 280 00:16:50,460 --> 00:16:53,370 Há um Facebook ID único que eu tenho. 281 00:16:53,370 --> 00:16:57,920 Você pode ver que eu sou macho e que eu tenho a minha configuração de idioma 282 00:16:57,920 --> 00:17:01,290 de Inglês Britânico. 283 00:17:01,290 --> 00:17:03,490 Em outras palavras, nós estamos vendo informações muito básicas aqui. 284 00:17:03,490 --> 00:17:08,670 Não é muito, mas dá-nos uma ideia do que está lá. 285 00:17:08,670 --> 00:17:10,849 >> Nós podemos fazer a mesma coisa com David Malan, por exemplo. 286 00:17:10,849 --> 00:17:13,599 Eu acho que o nome dele é dmalan. 287 00:17:13,599 --> 00:17:16,369 Vemos David Malan tem uma identificação única. 288 00:17:16,369 --> 00:17:19,300 Ele tem um nome, nome, nome do meio, sobrenome. 289 00:17:19,300 --> 00:17:24,210 Vemos também que ele é do sexo masculino e tem o seu conjunto de linguagem para Inglês dos EUA. 290 00:17:24,210 --> 00:17:26,869 Em outras palavras, nós estamos vendo informações bastante básico aqui. 291 00:17:26,869 --> 00:17:28,860 Agora, o que acontece se tentar verificar alguma outra coisa? 292 00:17:28,860 --> 00:17:33,060 Vamos dizer que eu estou interessada no que David Malan tem gostado no Facebook. 293 00:17:33,060 --> 00:17:36,860 Eu posso fazer / gostos. Agora vamos correr em um problema. 294 00:17:36,860 --> 00:17:39,280 Nós temos algum tipo de erro que diz que um token de acesso 295 00:17:39,280 --> 00:17:41,660 é obrigado a pedir este recurso. 296 00:17:41,660 --> 00:17:44,730 Mas se você pensar sobre isso, que realmente faz sentido, porque seria estranho 297 00:17:44,730 --> 00:17:47,830 se você pudesse acessar cada parte do banco de dados do Facebook 298 00:17:47,830 --> 00:17:50,170 só a partir de algum tipo de API simples, certo? 299 00:17:50,170 --> 00:17:56,040 Em outras palavras, provavelmente as informações não podem ser acessados ​​por qualquer um que quer. 300 00:17:56,040 --> 00:17:58,330 >> Este erro é exatamente o que isso significa. 301 00:17:58,330 --> 00:18:03,630 Algumas APIs exigem certas permissões para acessar os seus dados. 302 00:18:03,630 --> 00:18:06,940 E APIs ainda mais avançados, como o Facebook um, 303 00:18:06,940 --> 00:18:09,840 exigirá determinadas permissões para fazer certas coisas. 304 00:18:09,840 --> 00:18:12,650 Eu posso ver esta informação básica sobre David Malan. 305 00:18:12,650 --> 00:18:15,950 Eu posso ver que ele é do sexo masculino e que vive em os EUA, 306 00:18:15,950 --> 00:18:19,270 mas eu realmente não posso ver nada além disso. 307 00:18:19,270 --> 00:18:23,050 Para contornar esta situação, por enquanto, o Facebook tem esta ferramenta agradável 308 00:18:23,050 --> 00:18:27,690 que é o gráfico API explorador, ea idéia de que é que você pode classificar de 309 00:18:27,690 --> 00:18:31,880 tornar-se permissões para se baseado em sua própria conta 310 00:18:31,880 --> 00:18:35,680 e depois ver as coisas que especificamente a sua conta pode ver. 311 00:18:35,680 --> 00:18:45,120 Por exemplo, se eu fizer graph.facebook.com/billyjanitsch/likes- 312 00:18:45,120 --> 00:18:53,510 Opa, eu acho que tem que revalidar meu token aqui. 313 00:18:53,510 --> 00:18:55,950 Okay. 314 00:18:55,950 --> 00:19:01,740 Se eu fizer isso de novo, ótimo, agora eu vejo que eu tenho esse objeto de volta 315 00:19:01,740 --> 00:19:06,300 que diz que eu gosto de macarrão piscina, que são na categoria Jogos e Brinquedos. 316 00:19:06,300 --> 00:19:08,620 Eu gosto de morsas, que estão na categoria animal. 317 00:19:08,620 --> 00:19:10,180 Estes são os meus gostos Facebook reais. 318 00:19:10,180 --> 00:19:13,280 Eles são meio constrangedor. 319 00:19:13,280 --> 00:19:16,090 >> Mas podemos ver esses dados são todos voltaram em JSON. 320 00:19:16,090 --> 00:19:18,160 É bastante legível. 321 00:19:18,160 --> 00:19:20,970 Em outras palavras, nós temos esse mapeamento de dados para algum tipo de matriz, 322 00:19:20,970 --> 00:19:25,220 e cada elemento dessa matriz é um HashMap que mapeia 323 00:19:25,220 --> 00:19:28,530 o nome de uma como a categoria e de um gosto. 324 00:19:28,530 --> 00:19:31,240 Cada um como tem uma identificação única. 325 00:19:31,240 --> 00:19:34,510 Há todos os tipos de coisas diferentes de dados que podemos obter, 326 00:19:34,510 --> 00:19:37,980 e se você está interessado em usar a API do Facebook para um projeto final, CS50 327 00:19:37,980 --> 00:19:40,720 ou para qualquer coisa como que na verdade é bastante factível. 328 00:19:40,720 --> 00:19:44,260 Basicamente como você dar a volta à coisa de autenticação é o Facebook 329 00:19:44,260 --> 00:19:48,030 usa um sistema chamado OAuth, ou Open Authentication, 330 00:19:48,030 --> 00:19:52,870 e eu não quero entrar agora porque OAuth ou o tipo diferente 331 00:19:52,870 --> 00:19:56,060 de autenticação tende a variar muito entre diferentes APIs, 332 00:19:56,060 --> 00:19:58,320 para que eu pudesse passar um longo tempo passando por cima de cada um, 333 00:19:58,320 --> 00:20:01,170 mas eles são realmente bastante auto-explicativo. 334 00:20:01,170 --> 00:20:04,050 >> Se você Google Facebook API é muito legível. 335 00:20:04,050 --> 00:20:06,670 Há uma especificação todo. 336 00:20:06,670 --> 00:20:10,210 Por exemplo, esta é a documentação para a API do Facebook, 337 00:20:10,210 --> 00:20:14,170 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 338 00:20:14,170 --> 00:20:17,170 que estão disponíveis para obter os dados, tanto quanto 339 00:20:17,170 --> 00:20:21,550 e também as permissões diferentes que eu preciso, a fim de acessá-los. 340 00:20:21,550 --> 00:20:25,470 Como vimos, não precisamos de permissões para acessar o nome ou o sexo, 341 00:20:25,470 --> 00:20:29,380 mas além disso precisamos permissões para a maioria das coisas. 342 00:20:29,380 --> 00:20:33,040 Esta página, ou melhor, este site também irá lhe dizer como chegar 343 00:20:33,040 --> 00:20:35,640 um token para ser capaz de se autenticar. 344 00:20:35,640 --> 00:20:39,290 A maioria dos sistemas de autenticação usar algum tipo de token 345 00:20:39,290 --> 00:20:42,880 onde você receber esse valor único, que é uma cadeia muito longa e aleatória, 346 00:20:42,880 --> 00:20:46,240 e de que maneira eles podem associar o pedido que você está fazendo com você. 347 00:20:46,240 --> 00:20:50,560 Em outras palavras, eles sabem que você não está fazendo nada de suspeito com seus dados. 348 00:20:50,560 --> 00:20:53,340 Eles sabem exatamente o que você está recebendo. 349 00:20:53,340 --> 00:20:56,180 Eles também sabem que você tem permissão para ver as informações. 350 00:20:56,180 --> 00:20:59,110 >> Se você fez um aplicativo do Facebook e seu aplicativo tem certos usuários, 351 00:20:59,110 --> 00:21:03,380 e os usuários têm permitido que o app para acessar certas partes do seu perfil, 352 00:21:03,380 --> 00:21:07,790 então qualquer chave de API ou token que esse aplicativo está usando 353 00:21:07,790 --> 00:21:11,090 será capaz de acessar os dados para esses usuários. 354 00:21:11,090 --> 00:21:13,780 Isto pode parecer complicado, mas não é tão ruim, 355 00:21:13,780 --> 00:21:16,810 e se você quiser usar o Facebook Eu recomendo que você 356 00:21:16,810 --> 00:21:18,990 considerar a brincar com sua API. 357 00:21:18,990 --> 00:21:21,610 É muito legal, e você pode fazer um monte de coisas diferentes com ele. 358 00:21:21,610 --> 00:21:24,880 Se o usuário concede essas permissões que você pode até mesmo voltar para a API 359 00:21:24,880 --> 00:21:28,820 e dizer que eu quero, na verdade, colocar a parede do usuário, ou eu quero tê-los postar uma foto, 360 00:21:28,820 --> 00:21:32,390 e é por isso que em seu feed de notícias você começa às vezes essas coisas irritantes 361 00:21:32,390 --> 00:21:37,840 dizendo que seu amigo tenha visto este vídeo em algum tipo de site estranho ou algo parecido. 362 00:21:37,840 --> 00:21:43,120 Isso porque esse app foi concedido acesso para postar no mural da pessoa. 363 00:21:43,120 --> 00:21:48,350 A idéia geral, a API do Facebook é bastante complicado, mas também muito útil. 364 00:21:48,350 --> 00:21:53,220 Vale a pena experimentar se você ainda está procurando um projeto final. 365 00:21:53,220 --> 00:21:57,930 >> Outro conjunto de APIs que eu vou passar por cima de APIs é CS50. 366 00:21:57,930 --> 00:22:00,070 Deixe-me aproximar aqui. 367 00:22:00,070 --> 00:22:03,390 CS50 tem realmente juntar uma série de APIs 368 00:22:03,390 --> 00:22:07,080 que você pode usar para um projeto final ou apenas para qualquer coisa que você está fazendo. 369 00:22:07,080 --> 00:22:12,830 E eles estão principalmente relacionados Harvard, e variam a partir do menu HUDS, 370 00:22:12,830 --> 00:22:17,780 por exemplo, para este Harvard Eventos API, o que lhe permitirá aceder a uma lista de 371 00:22:17,780 --> 00:22:21,290 diferentes eventos que estão acontecendo em Harvard e esse tipo de coisa. 372 00:22:21,290 --> 00:22:24,510 E, assim, pode clicar em qualquer um deles e ter uma especificação para ele, 373 00:22:24,510 --> 00:22:28,090 que você vai ser capaz de encontrar para qualquer API, ea idéia é 374 00:22:28,090 --> 00:22:33,920 ele permite que você sabe, A, especificamente o de solicitar a API e como solicitá-la. 375 00:22:33,920 --> 00:22:37,370 Em outras palavras, se eu quiser que todos os eventos que estão acontecendo amanhã 376 00:22:37,370 --> 00:22:42,550 então eu tenho que, obviamente, dar-lhe essa data que eu quero em um determinado formato, 377 00:22:42,550 --> 00:22:46,030 e B, ele vai me dizer exatamente o que vai dar de volta para mim. 378 00:22:46,030 --> 00:22:48,590 Ele vai dizer que eu estou indo para retornar este objeto JSON, 379 00:22:48,590 --> 00:22:50,960 ou como você pode ver, há diferentes formatos. 380 00:22:50,960 --> 00:22:54,050 >> Você também pode retornar os dados como CSV, por exemplo. 381 00:22:54,050 --> 00:22:57,620 Mas você sabe exatamente como os dados vai olhar quando você recebe de volta 382 00:22:57,620 --> 00:23:00,610 então você pode esperar para fazer certas coisas com ele. 383 00:23:00,610 --> 00:23:07,240 Nós pode rolar para baixo e ver, por exemplo, se queremos consultar a API 384 00:23:07,240 --> 00:23:11,500 para obter um calendário, então podemos usar este URL especial 385 00:23:11,500 --> 00:23:16,480 e dar-lhe certos parâmetros que vão ser os dados que nós queremos exatamente. 386 00:23:16,480 --> 00:23:19,540 E da mesma forma, se queremos que os dados de volta em um determinado formato, 387 00:23:19,540 --> 00:23:23,790 então podemos pedir-lhe para transmitir os dados em um arquivo CSV, 388 00:23:23,790 --> 00:23:27,700 e isso é só outro parâmetro que estamos passando para o API. 389 00:23:27,700 --> 00:23:29,210 Muitas coisas legais para fazer lá. 390 00:23:29,210 --> 00:23:32,550 Eu definitivamente recomendaria verificar as APIs CS50. 391 00:23:32,550 --> 00:23:36,000 >> Eu vou olhar para esta API Alimentos Harvard, em especial para um pouco. 392 00:23:36,000 --> 00:23:39,870 Uma coisa que eu realmente concebido é este Harvard site Noms, 393 00:23:39,870 --> 00:23:44,930 que utiliza a API Food CS50 para recuperar o menu HUDS para o dia. 394 00:23:44,930 --> 00:23:50,400 E para as pessoas da escola de extensão, HUDS é o serviço de jantar em Harvard. 395 00:23:50,400 --> 00:23:55,130 O que você recebe é esta página que contém todas as refeições do dia, por isso vemos o almoço. 396 00:23:55,130 --> 00:23:58,130 Temos algumas categorias diferentes. Nós temos o feijão e da estação de grãos inteiros. 397 00:23:58,130 --> 00:24:00,340 Nós temos a estação de arroz integral. 398 00:24:00,340 --> 00:24:03,360 Podemos ver para brunch temos estes alimentos poucos. 399 00:24:03,360 --> 00:24:07,030 Se clicar sobre eles, então nós temos a informação nutricional. 400 00:24:07,030 --> 00:24:12,240 Você vê esta é a informação nutricional para grapefruit, caso você esteja se perguntando. 401 00:24:12,240 --> 00:24:14,870 E novamente, vamos para perscrutar a extremidade traseira um pouco aqui 402 00:24:14,870 --> 00:24:18,530 e ver exatamente o que isso está fazendo para obter esses dados. 403 00:24:18,530 --> 00:24:21,710 E isso acaba por não ser realmente muito complexo em tudo. 404 00:24:21,710 --> 00:24:28,720 Este arquivo parece um pouco confuso, mas tenha em mente que este está a lidar com o site inteiro, 405 00:24:28,720 --> 00:24:34,130 e se eu rolar para baixo vemos esta mudança função de dados. 406 00:24:34,130 --> 00:24:36,630 >> Agora, só para ficar claro, isso está escrito no CoffeeScript, 407 00:24:36,630 --> 00:24:39,570 que é uma linguagem que você provavelmente não tenha visto antes. 408 00:24:39,570 --> 00:24:44,810 Mas é muito legível, então eu vou passar por ela como se fosse pseudocódigo. 409 00:24:44,810 --> 00:24:49,080 Alterar data é uma função que vai levar neste valor, data 410 00:24:49,080 --> 00:24:51,740 e também vai levar em um primeiro, que não se preocupam com o máximo. 411 00:24:51,740 --> 00:24:54,110 Mas o importante é que tem esta data, 412 00:24:54,110 --> 00:25:00,080 e essa data é o dia que nós queremos pedir a todos os itens alimentares para. 413 00:25:00,080 --> 00:25:04,030 E então você vê que temos um pouco de sintaxe aqui, 414 00:25:04,030 --> 00:25:09,000 que é basicamente analisar essa data em um formato legível. 415 00:25:09,000 --> 00:25:11,920 Em outras palavras, o API exige a data em um formato determinado. 416 00:25:11,920 --> 00:25:17,390 Você não pode simplesmente dizer 16 de novembro de 2012 AD. 417 00:25:17,390 --> 00:25:20,320 Ele não vai saber o que fazer com isso. Ele quer a data em um formato específico. 418 00:25:20,320 --> 00:25:23,230 Tudo o que estamos fazendo aqui é dar-lhe exatamente o formato que, 419 00:25:23,230 --> 00:25:26,520 que é um valor de ano e, em seguida, um hífen, um valor de mês, 420 00:25:26,520 --> 00:25:29,420 outro hífen eo valor de data. 421 00:25:29,420 --> 00:25:34,910 E também dizer que queremos os dados para saída em JSON. 422 00:25:34,910 --> 00:25:37,560 >> Agora estamos fazendo este pedido AJAX, e como já referi anteriormente, 423 00:25:37,560 --> 00:25:41,680 jQuery tem esta super função AJAX útil, que tudo o que você precisa fazer é especificar 424 00:25:41,680 --> 00:25:45,780 alguns parâmetros para baixo aqui, e ele vai lhe dar de volta exatamente o que você quer. 425 00:25:45,780 --> 00:25:50,490 Nós estamos dizendo é que a URL que queremos ir é esta API Alimentos CS50, 426 00:25:50,490 --> 00:25:52,270 que temos a partir da especificação. 427 00:25:52,270 --> 00:25:56,730 Nós dizemos que queremos que os dados em JSON e que 428 00:25:56,730 --> 00:25:59,490 vamos dar-lhe esses dados que temos até aqui definidos. 429 00:25:59,490 --> 00:26:02,670 Este é o dia em que deseja que os itens alimentares para. 430 00:26:02,670 --> 00:26:07,790 E então tudo o que temos a fazer é definir algum tipo de função de sucesso, 431 00:26:07,790 --> 00:26:11,980 que é basicamente o que acontece quando a API retorna os dados. 432 00:26:11,980 --> 00:26:15,490 Em outras palavras, nós embalados todos os parâmetros que nós queremos, 433 00:26:15,490 --> 00:26:20,530 que neste caso é o dia que nós queremos que ele eo fato de que nós queremos em JSON, 434 00:26:20,530 --> 00:26:23,840 e enviou-o para a API, agora o API está dizendo, tudo bem, 435 00:26:23,840 --> 00:26:26,350 aqui está os seus dados, eu peguei de volta para você. 436 00:26:26,350 --> 00:26:29,930 Temos a função de sucesso, o que significa que uma vez que a API 437 00:26:29,930 --> 00:26:32,230 com sucesso retorna alguns dados, o que vamos fazer com ele? 438 00:26:32,230 --> 00:26:35,980 >> E verifica-se que tudo o que fazemos é chamar esta função menu de atualização 439 00:26:35,980 --> 00:26:42,680 com o que a API está de volta, para que possamos procurar que 440 00:26:42,680 --> 00:26:47,970 e ver que tudo o que estamos fazendo é usando um monte de nova sintaxe aqui 441 00:26:47,970 --> 00:26:52,220 para atualizar o HTML e inserir esses dados novos. 442 00:26:52,220 --> 00:26:56,580 O que permite é que temos essas setas de cada lado, e podemos clicar, 443 00:26:56,580 --> 00:27:01,060 e agora estamos olhando para os dados para o dia seguinte e novamente para o dia seguinte, 444 00:27:01,060 --> 00:27:04,820 e cada vez que está atualizando esse valor de data e consultando a API, 445 00:27:04,820 --> 00:27:07,510 voltar alguns dados e colocá-lo no site. 446 00:27:07,510 --> 00:27:10,590 Mais uma vez, você pode ver, super, super útil. 447 00:27:10,590 --> 00:27:14,410 Este aplicativo me levou algumas horas para cortar juntos, 448 00:27:14,410 --> 00:27:20,140 e eu tenho um pouco mais de experiência, obviamente, mas o seu projecto final, CS50 449 00:27:20,140 --> 00:27:22,870 pode ser algo muito parecido com isso. 450 00:27:22,870 --> 00:27:29,540 >> APIs são super poderosa para a quantidade de esforço que tomam. 451 00:27:29,540 --> 00:27:32,800 A última coisa que eu vou passar por cima de algumas APIs é mais ampla. 452 00:27:32,800 --> 00:27:35,480 Eu não vou chegar tão longe para eles, tanto quanto o que fazem especificamente, 453 00:27:35,480 --> 00:27:38,740 mas vou lhe dar uma idéia do que está lá fora. 454 00:27:38,740 --> 00:27:42,700 2 os realmente úteis, se você estiver interessado na análise de dados ou visualização 455 00:27:42,700 --> 00:27:45,960 ou qualquer coisa assim, são Freebase e Wikipedia. 456 00:27:45,960 --> 00:27:49,800 Wikipedia-presumivelmente todos sabem, é uma enciclopédia livre online, 457 00:27:49,800 --> 00:27:53,230 e ele realmente tem uma API, por isso, se você quiser, por exemplo, 458 00:27:53,230 --> 00:27:56,250 obter todos os textos e os artigos para polvo 459 00:27:56,250 --> 00:27:58,030 você pode facilmente fazer isso. 460 00:27:58,030 --> 00:28:02,300 Basta dizer hey, Wikipedia API, eu gostaria que os dados retornados como este, 461 00:28:02,300 --> 00:28:07,010 e eu gostaria que neste formato, eo artigo que eu gostaria é polvo, 462 00:28:07,010 --> 00:28:09,820 e muito rapidamente ele vai lhe dar de volta essa informação. 463 00:28:09,820 --> 00:28:12,230 Isso pode ser muito útil se você quiser fazer algum tipo de site 464 00:28:12,230 --> 00:28:16,200 isso é uma melhor visualização para a Wikipedia ou algo assim. 465 00:28:16,200 --> 00:28:21,350 >> Freebase é uma espécie de similar, embora seja um pouco mais difícil, tanto quanto API. 466 00:28:21,350 --> 00:28:24,390 Freebase é como a Wikipedia, em que é uma enciclopédia on-line 467 00:28:24,390 --> 00:28:29,050 que contém muitos e muitos dados diferentes sobre todos os tipos de temas diferentes, 468 00:28:29,050 --> 00:28:33,150 mas ele é armazenado em um banco de dados relacional, o que é ligeiramente diferente da Wikipedia. 469 00:28:33,150 --> 00:28:36,410 Wikipedia tem os seus artigos e artigos ligados a outros artigos, 470 00:28:36,410 --> 00:28:38,860 mas a maior parte, se você quiser os dados para o polvo, 471 00:28:38,860 --> 00:28:41,990 você vai para o artigo polvo, obter os dados, e você tem um monte de texto 472 00:28:41,990 --> 00:28:43,830 sobre os polvos, o que é ótimo. 473 00:28:43,830 --> 00:28:46,870 Freebase funciona de uma maneira um pouco mais complicada em que 474 00:28:46,870 --> 00:28:48,930 tudo está relacionado com um outro. 475 00:28:48,930 --> 00:28:52,620 Em outras palavras, se estamos à procura de polvo 476 00:28:52,620 --> 00:28:54,940 então ele tem um monte de categorias de associados. 477 00:28:54,940 --> 00:28:57,920 >> Por exemplo, é um animal, que vive debaixo d'água, 478 00:28:57,920 --> 00:28:59,710 ela tem uma temperatura corporal determinado. 479 00:28:59,710 --> 00:29:01,210 Eu não sei. 480 00:29:01,210 --> 00:29:04,230 E todas essas categorias são links para outros lugares onde você pode ir 481 00:29:04,230 --> 00:29:06,640 a ver as coisas com mesma categoria. 482 00:29:06,640 --> 00:29:13,450 Em outras palavras, o polvo conjunto de dados que contém um link para o conjunto de dados para todos os animais, 483 00:29:13,450 --> 00:29:16,790 e que me deixou mover no banco de dados muito rapidamente. 484 00:29:16,790 --> 00:29:21,740 Isto pode ser muito útil se você está fazendo algo como comparações. 485 00:29:21,740 --> 00:29:24,490 Em outras palavras, dada uma certa coisa, que você quer ver 486 00:29:24,490 --> 00:29:27,890 o que mais está relacionado e ver o que mais ele não está relacionado. 487 00:29:27,890 --> 00:29:30,700 Esse tipo de coisa. Pode ser útil em um número de maneiras. 488 00:29:30,700 --> 00:29:34,250 Se você está procurando por mais de um desafio e de ser capaz de fazer algumas coisas mais complexas 489 00:29:34,250 --> 00:29:38,740 Eu consideraria dar uma olhada na API Freebase. 490 00:29:38,740 --> 00:29:44,670 Mas em grande parte, a Wikipedia é um lugar muito simples para ir tão longe como a obtenção de informações. 491 00:29:44,670 --> 00:29:48,340 Outro lugar que eu vou olhar é o Last.fm, e eu estou indo realmente para ir para o site 492 00:29:48,340 --> 00:29:53,800 no caso de algumas pessoas não estão familiarizados, mas Last.fm é basicamente uma música 493 00:29:53,800 --> 00:29:57,220 gostos e site recomendações. 494 00:29:57,220 --> 00:29:59,000 Você pode fazer uma conta. 495 00:29:59,000 --> 00:30:04,250 Você pode começar a carregar música de seu player de música 496 00:30:04,250 --> 00:30:08,020 para o site, e, basicamente, ele vai começar a dar-lhe recomendações de músicas 497 00:30:08,020 --> 00:30:10,030 com base no que você ouve. 498 00:30:10,030 --> 00:30:14,270 >> Por exemplo, se você vai para o seu perfil de página é de minas 499 00:30:14,270 --> 00:30:18,180 você pode ver que você tem uma lista de recentemente ouviu faixas. 500 00:30:18,180 --> 00:30:22,550 Você pode ver gerais artistas favoritos, todos esse tipo de coisa, 501 00:30:22,550 --> 00:30:25,280 e, novamente, há uma API de grande atrás Last.fm, 502 00:30:25,280 --> 00:30:29,360  e você pode usá-lo para fazer muitas e muitas coisas legais. 503 00:30:29,360 --> 00:30:38,870 Por exemplo, eu vou para a página de um amigo que tem este site Last.fm Ferramentas. 504 00:30:38,870 --> 00:30:42,380 Esta é realmente uma outra plataforma que é construído sobre a API do Last.fm, 505 00:30:42,380 --> 00:30:45,420 e faz uma série de bonitas coisas interessantes. 506 00:30:45,420 --> 00:30:50,260 Se eu entrar com meu nome de usuário, por exemplo, 507 00:30:50,260 --> 00:30:53,110 Eu posso pedir para ele gerar uma nuvem de tags, por exemplo, 508 00:30:53,110 --> 00:30:56,480 eo que isso vai fazer é me dar de volta uma imagem de 509 00:30:56,480 --> 00:30:59,850 todos os diferentes gêneros e esse tipo de coisa que eu gosto de ouvir. 510 00:30:59,850 --> 00:31:01,410 Como é que está fazendo isso? 511 00:31:01,410 --> 00:31:05,670 Muito basicamente está dizendo para a API do Last.fm aqui está este usuário. 512 00:31:05,670 --> 00:31:10,710 Eu gostaria de saber o gênero de cada música que já ouviu, 513 00:31:10,710 --> 00:31:15,130 e você pode fazer isso fazendo uma bem simples chamada AJAX para a API do Last.fm. 514 00:31:15,130 --> 00:31:18,990 Você receberá de volta uma grande lista e, então, obviamente, algumas outras coisas está sendo feito 515 00:31:18,990 --> 00:31:22,280 para transformá-lo em uma nuvem de palavras, mas você pode ver geral 516 00:31:22,280 --> 00:31:25,850 é muito fácil de acessar e muito fácil de usar. 517 00:31:25,850 --> 00:31:30,750 Muito bom para uma série de coisas. 518 00:31:30,750 --> 00:31:35,940 >> Eu acho que isso é tudo que eu vou dizer em geral. 519 00:31:35,940 --> 00:31:39,040 Uma última coisa que eu vou falar sobre APIs em geral é que 520 00:31:39,040 --> 00:31:41,840 você vai, por vezes, em algo chamado limite de taxa, 521 00:31:41,840 --> 00:31:44,940 ea idéia de limitação de taxa é que você não quer abusar APIs. 522 00:31:44,940 --> 00:31:48,130 Em outras palavras, é muito bom que muitos destes sites têm APIs 523 00:31:48,130 --> 00:31:51,070 que você pode ir e utilizar gratuitamente. 524 00:31:51,070 --> 00:31:54,460 No entanto, se você está fazendo milhões ou bilhões de solicitações por dia, 525 00:31:54,460 --> 00:31:57,610 por exemplo, se você está preso em um loop infinito que é infinitamente consultando 526 00:31:57,610 --> 00:32:00,680 algum tipo de API e recebendo de volta uma quantidade enorme de dados, 527 00:32:00,680 --> 00:32:04,570 obviamente que não é bom, então o que um monte de APIs fazer é ter esta taxa limitante 528 00:32:04,570 --> 00:32:09,970 que diz que você só pode fazer 1.000 pedidos por dia e por endereço IP ou algo assim. 529 00:32:09,970 --> 00:32:12,540 E se você está fazendo um monte de testes e esse tipo de coisa, 530 00:32:12,540 --> 00:32:14,890 às vezes você correr para isso, e de repente ele desliga-lo fora 531 00:32:14,890 --> 00:32:18,280 e dizer não, eu não vou te dar mais dados. 532 00:32:18,280 --> 00:32:20,000 >> O que você quer fazer é jogar pelas regras. 533 00:32:20,000 --> 00:32:22,950 Você quer ter certeza de que você leia a especificação API cuidado. 534 00:32:22,950 --> 00:32:26,330 Se ele tem certas regras ligadas a ele, como você só pode fazer consultas X por dia 535 00:32:26,330 --> 00:32:30,000 ou você pode acessar apenas uma parte do banco de dados de um determinado número de vezes 536 00:32:30,000 --> 00:32:32,900 ou algo assim que você quer ter certeza de que você ater a isso. 537 00:32:32,900 --> 00:32:38,360 Enquanto você jogar dentro dessas regras que você provavelmente vai ter um tempo muito bom usando APIs. 538 00:32:38,360 --> 00:32:42,030 Seu takeaway geral é APIs são muito, muito útil. 539 00:32:42,030 --> 00:32:45,610 >> Há uma API para quase qualquer serviço web grande lá fora. 540 00:32:45,610 --> 00:32:50,700 Praticamente qualquer parte do Ferramentas do Google Suite, Google Maps, Google Earth, 541 00:32:50,700 --> 00:32:54,390 GMail, Google Calendar, todas essas coisas têm APIs. 542 00:32:54,390 --> 00:32:58,280 Você pode usá-los com os dados de começar a partir do servidor e enviar dados para o servidor. 543 00:32:58,280 --> 00:33:00,870 Em outras palavras, se você quiser fazer uma aplicação de calendário que pode atualizar 544 00:33:00,870 --> 00:33:04,190 Calendário de alguém do Google, há uma API para isso. 545 00:33:04,190 --> 00:33:07,810 Se você quiser fazer algo que vai te dizer onde 546 00:33:07,810 --> 00:33:12,530 a localização de um determinado endereço é que você pode usar a API do Google Maps para isso. 547 00:33:12,530 --> 00:33:15,860 APIs são fantasticamente útil, e eles estão em toda parte. 548 00:33:15,860 --> 00:33:18,700 Se você estiver interessado em algum tipo de idéia, 549 00:33:18,700 --> 00:33:22,170 provavelmente há uma API relacionado que você pode utilizar para obter uma grande quantidade de dados 550 00:33:22,170 --> 00:33:25,060 muito rapidamente e de maneira muito simples. 551 00:33:25,060 --> 00:33:28,140 >> Se você ainda está procurando um projeto ou se você só quer brincar 552 00:33:28,140 --> 00:33:31,820 com algo em geral, APIs são definitivamente vale a pena fazer. 553 00:33:31,820 --> 00:33:37,200 Obrigado, e eu estou feliz em responder qualquer pergunta que vocês possam ter. 554 00:33:37,200 --> 00:33:44,900 Ok, muito obrigado. 555 00:33:44,900 --> 00:33:48,000 [CS50.TV]