1 00:00:00,000 --> 00:00:02,480 [Powered by Google Translate] [Séminaire] [Un programmeur Introduction à l'API] 2 00:00:02,480 --> 00:00:04,059 [Billy Janitsch] [Université de Harvard] [Tommy MacWilliam] 3 00:00:04,059 --> 00:00:08,220 [C'est CS50.] [CS50.TV] 4 00:00:08,220 --> 00:00:12,100 >> Salut tout le monde, je suis Billy, et aujourd'hui, je vais parler de API, 5 00:00:12,100 --> 00:00:15,220 ou des interfaces de programmation d'applications, 6 00:00:15,220 --> 00:00:20,040 spécifiquement dans le cadre de projets de fin d'CS50 et ce genre de chose. 7 00:00:20,040 --> 00:00:22,490 En général, ce qui est une API? 8 00:00:22,490 --> 00:00:25,530 En termes très généraux, c'est en quelque sorte un intermédiaire qui permet à 2 pièces 9 00:00:25,530 --> 00:00:28,610 des logiciels de communiquer les uns avec les autres. 10 00:00:28,610 --> 00:00:32,530 C'est une sorte de définition très large et n'est pas pertinent pour ce que nous étudions. 11 00:00:32,530 --> 00:00:35,450 Ce que nous voulons vraiment, c'est une sorte de terrain d'entente utiles 12 00:00:35,450 --> 00:00:40,570 pour communiquer avec une sorte de base de données quelque part. 13 00:00:40,570 --> 00:00:43,310 >> Voici un tableau et, fondamentalement, l'idée est que 14 00:00:43,310 --> 00:00:46,790 nous sommes une application, et nous voulons obtenir des données d'une base de données, 15 00:00:46,790 --> 00:00:49,570 mais nous ne voulons pas d'interroger la base de données directement. 16 00:00:49,570 --> 00:00:52,710 Au lieu de cela, nous voulons passer par ce genre d'homme du milieu, de l'API. 17 00:00:52,710 --> 00:00:55,440 L'idée derrière cela est numéros 2 et 3 sur le graphique 18 00:00:55,440 --> 00:00:57,750 sont tous les deux va être très compliqué et salissant. 19 00:00:57,750 --> 00:00:59,960 En d'autres termes, lorsque l'API est l'interrogation de la base de données, 20 00:00:59,960 --> 00:01:03,300 il va probablement être en utilisant des tables SQL et tous ce genre de choses, 21 00:01:03,300 --> 00:01:05,489 et nous avons appris un peu plus à ce sujet dans CS50, mais dans l'ensemble, 22 00:01:05,489 --> 00:01:07,590 vous avez remarqué que c'est un peu la douleur. 23 00:01:07,590 --> 00:01:10,590 Il devient très, très compliqué et salissant, surtout quand vous faites 24 00:01:10,590 --> 00:01:12,530 des requêtes complexes et ce genre de chose. 25 00:01:12,530 --> 00:01:15,960 >> Ce que nous voulons vraiment, c'est une sorte de façon simple et utile 26 00:01:15,960 --> 00:01:19,780 pour obtenir ces données, et que l'idée derrière les numéros 1 et 4 sur le diagramme. 27 00:01:19,780 --> 00:01:23,600 En d'autres termes, nous voulons un moyen très simple de dire ce que l'API pour obtenir pour nous 28 00:01:23,600 --> 00:01:27,760 et un moyen très simple d'obtenir ces données en arrière. 29 00:01:27,760 --> 00:01:33,020 Il ya un moyen principal que les données sont généralement envoyés et reçus, 30 00:01:33,020 --> 00:01:36,490 qui est JSON ou JavaScript Object Notation. 31 00:01:36,490 --> 00:01:40,370 Cela peut varier un peu en ce qui concerne la façon dont vous envoyer la requête à l'API. 32 00:01:40,370 --> 00:01:43,210 En d'autres termes, si vous voulez un certain nombre de données, 33 00:01:43,210 --> 00:01:46,670 comment vous dire l'API pour obtenir ces données peut varier un peu. 34 00:01:46,670 --> 00:01:49,210 Habituellement, il consiste à faire une sorte de requête réseau. 35 00:01:49,210 --> 00:01:53,130 En d'autres termes, l'accès à une sorte d'URL qui va raconter l'API 36 00:01:53,130 --> 00:01:56,190 exactement ce que vous voulez, mais les données sont presque toujours renvoyé, 37 00:01:56,190 --> 00:01:59,530 en d'autres termes, numéro 4 en JSON. 38 00:01:59,530 --> 00:02:01,030 >> Qu'est-ce que JSON exactement? 39 00:02:01,030 --> 00:02:03,030 Comme je l'ai dit, JavaScript Object Notation. 40 00:02:03,030 --> 00:02:07,090 Il s'agit essentiellement de la norme universelle pour la transmission et la réception de données. 41 00:02:07,090 --> 00:02:11,410 L'idée est que vous avez ces 3 catégories de choses. 42 00:02:11,410 --> 00:02:13,540 Vous avez des tableaux, HashMap, et les primitives. 43 00:02:13,540 --> 00:02:16,580 Les tableaux et les HashMaps vous avez regardé un peu en CS50, 44 00:02:16,580 --> 00:02:19,870 mais vous avez en quelque sorte obtenu un sens très strict de ce qu'ils sont. 45 00:02:19,870 --> 00:02:22,780 En d'autres termes, avec des tableaux que vous savez qu'ils sont de type lié, 46 00:02:22,780 --> 00:02:26,560 de sorte que vous n'avez qu'une seule sorte de type qui va tout au long de l'ensemble du réseau. 47 00:02:26,560 --> 00:02:29,310 JSON est beaucoup plus indulgent avec ce genre de chose. 48 00:02:29,310 --> 00:02:33,590 Fondamentalement, l'idée est de construire cet objet, 49 00:02:33,590 --> 00:02:36,270 qui peut être composé de n'importe lequel de ces 3 choses 50 00:02:36,270 --> 00:02:39,470 et peut être composé de plusieurs caractères d'entre eux, et ils peuvent être imbriqués. 51 00:02:39,470 --> 00:02:42,110 >> Voici en quelque sorte d'un exemple de JSON, 52 00:02:42,110 --> 00:02:47,910 qui sont ces accolades ici représentent votre table de hachage, 53 00:02:47,910 --> 00:02:51,400 et une table de hachage est essentiellement une cartographie d'une sorte de clé 54 00:02:51,400 --> 00:02:53,340 à une sorte de valeur. 55 00:02:53,340 --> 00:02:56,440 Vous verrez ici que nous avons la clé propriétés, 56 00:02:56,440 --> 00:02:59,600 et c'est la cartographie dans un tableau, ce qui est tout cela. 57 00:02:59,600 --> 00:03:04,120 Nous voyons un autre élément de la table de hachage, ce qui est isAwesome clé, 58 00:03:04,120 --> 00:03:07,370 qui fait correspondre à une valeur primitive de vrai, en d'autres termes, un booléen. 59 00:03:07,370 --> 00:03:09,420 Primitives peuvent être des chaînes. Ils peuvent être des nombres entiers. 60 00:03:09,420 --> 00:03:11,960 Ils peuvent être bools, quelque chose comme ça. 61 00:03:11,960 --> 00:03:18,410 Et vous voyez le contenu de ce tableau que les points de propriétés a 2 cordes en elle, 62 00:03:18,410 --> 00:03:20,050 auto-similaire et merveilleux. 63 00:03:20,050 --> 00:03:27,410 Ce sont 2 propriétés de JSON, et nous voyons que JSON est génial. 64 00:03:27,410 --> 00:03:30,060 Pour examiner cette question un peu plus près, je vais construire 65 00:03:30,060 --> 00:03:32,870 Un exemple plus complexe de JSON ici. 66 00:03:32,870 --> 00:03:37,000 >> Commençons par un tableau, par exemple, juste un tableau vide. 67 00:03:37,000 --> 00:03:39,180 Mais c'est un peu ennuyeux, alors nous allons le remplir un peu, 68 00:03:39,180 --> 00:03:43,420 et comme je l'ai dit, les tableaux dans JSON sont de type lié, 69 00:03:43,420 --> 00:03:46,400 afin que nous puissions aussi avoir une chaîne ici, ce qui est salut, 70 00:03:46,400 --> 00:03:49,330 et c'est un autre élément de ce tableau. 71 00:03:49,330 --> 00:03:53,450 Et de même, on pourrait ajouter un hashmapping ici, ce qui va avoir un peu de correspondances. 72 00:03:53,450 --> 00:04:00,470 Il va avoir une correspondance entre le nom de la chaîne de Billy. 73 00:04:00,470 --> 00:04:04,590 Nous avons une cartographie du nom de Billy, et nous avons une cartographie des 74 00:04:04,590 --> 00:04:10,860 couleur préférée au bleu. 75 00:04:10,860 --> 00:04:12,700 C'est fondamentalement un bon exemple de JSON. 76 00:04:12,700 --> 00:04:18,160 Il sorte de monte dans les cris, il ya besoin d'une virgule, toutes les différentes parties de celui-ci. 77 00:04:18,160 --> 00:04:21,140 Encore une fois, ce n'est pas du tout lié taper, vous pouvez donc avoir toute sorte de types 78 00:04:21,140 --> 00:04:24,710 l'intérieur de ce que vous voulez, et l'idée est qu'il est auto-similaire. 79 00:04:24,710 --> 00:04:28,830 En d'autres termes, ce droit ici est un objet JSON, que toute cette chose est, 80 00:04:28,830 --> 00:04:33,200 comme il est juste cela, vous pouvez donc avoir une primitive être un objet, 81 00:04:33,200 --> 00:04:35,680 un tableau comme un objet ou une table de hachage est un objet. 82 00:04:35,680 --> 00:04:40,270 >> Comme vous pouvez sorte de voir, JSON est vraiment, vraiment utile, car il est tellement polyvalent. 83 00:04:40,270 --> 00:04:45,860 Vous pouvez avoir toutes les données possibles que vous pouvez concevoir stockées au format JSON. 84 00:04:45,860 --> 00:04:47,900 C'est en fait un langage vraiment agréable à utiliser avec les API 85 00:04:47,900 --> 00:04:50,770 parce que c'est à peu près dire que peu importe ce que les données que vous souhaitez 86 00:04:50,770 --> 00:04:54,270 il va y avoir un moyen de le récupérer au format JSON. 87 00:04:54,270 --> 00:04:58,600 Quelques propriétés qui font de JSON particulièrement bon pour ce genre de chose. 88 00:04:58,600 --> 00:05:02,270 Comme vous pouvez le voir, par rapport à beaucoup de choses que vous avez travaillé avec de CS50 89 00:05:02,270 --> 00:05:06,040 il est relativement très facile à lire et très facile à écrire. 90 00:05:06,040 --> 00:05:09,700 Vous pouvez le tiret si vous voulez, comme je faisais dans cet exemple, 91 00:05:09,700 --> 00:05:12,990 ce qui vous donne une belle version assez que vous pouvez voir très bien. 92 00:05:12,990 --> 00:05:17,150 Mais par ailleurs, il est également facile à lire et à écrire pour un ordinateur. 93 00:05:17,150 --> 00:05:19,870 En d'autres termes, il est facile à analyser et facile à coder, 94 00:05:19,870 --> 00:05:23,820 ce qui signifie qu'il est assez rapide dans la mesure où la lecture des données est concernée, 95 00:05:23,820 --> 00:05:26,460 et JSON peut être généré très rapidement. 96 00:05:26,460 --> 00:05:30,300 >> Il est également très facile d'accéder à différentes parties du JSON et ce genre de chose. 97 00:05:30,300 --> 00:05:33,320 C'est gentil, et, en outre, le fait que c'est auto-similaire, 98 00:05:33,320 --> 00:05:36,090 en d'autres termes, le fait que vous pouvez avoir JSON JSON au sein au sein de JSON 99 00:05:36,090 --> 00:05:40,040 C'est vraiment sympa pour stocker des données. 100 00:05:40,040 --> 00:05:45,490 Une autre partie qui est généralement très utile de travailler avec les API est jQuery. 101 00:05:45,490 --> 00:05:49,290 Vous avez appris un peu de JavaScript, qui est une belle façon de 102 00:05:49,290 --> 00:05:53,710 pour manipuler du code HTML et CSS dans un site Web. 103 00:05:53,710 --> 00:05:57,190 Mais il peut être genre d'une douleur au code JavaScript dans la plaine, 104 00:05:57,190 --> 00:05:59,810 en grande partie parce que JavaScript est un langage très verbeux. 105 00:05:59,810 --> 00:06:03,020 Vous avez beaucoup à apprendre de la syntaxe, et juste pour faire des choses très simples 106 00:06:03,020 --> 00:06:07,590 il faut beaucoup de code, donc jQuery est une bibliothèque JavaScript pour. 107 00:06:07,590 --> 00:06:09,800 En d'autres termes, il s'agit d'un fichier JavaScript que vous pouvez charger 108 00:06:09,800 --> 00:06:12,730 puis utiliser les fonctions de jQuery pour faire certaines choses. 109 00:06:12,730 --> 00:06:15,670 Et jQuery rend fondamentalement votre vie beaucoup plus facile. 110 00:06:15,670 --> 00:06:20,390 Il simplifie ce qui prendrait des centaines de lignes de JavaScript vers le bas pour quelques lignes dans jQuery. 111 00:06:20,390 --> 00:06:24,430 >> C'est particulièrement utile si vous utilisez des API car généralement 112 00:06:24,430 --> 00:06:27,600 comment vous allez accéder à des API est en faisant des requêtes AJAX, 113 00:06:27,600 --> 00:06:30,130 et je crois que David l'a mentionné dans la conférence que les requêtes AJAX 114 00:06:30,130 --> 00:06:33,120 sont en général lorsque vous faites une demande de réseau à une sorte de serveur 115 00:06:33,120 --> 00:06:37,760 et de reprendre une certaine sorte de données et mise à jour d'une page instantanément. 116 00:06:37,760 --> 00:06:41,840 Alors que dans d'activer JavaScript clair que prendrait le nombre de lignes folles 117 00:06:41,840 --> 00:06:44,620 de valider tous les en-têtes et faire tout ce genre de choses, 118 00:06:44,620 --> 00:06:46,810 jQuery possède une fonction très simple, appelée AJAX, 119 00:06:46,810 --> 00:06:51,760 et tout ce que vous avez à faire, c'est de donner AJAX les paramètres que vous souhaitez donner à l'API, 120 00:06:51,760 --> 00:06:56,830 l'emplacement de l'API et de toute forme supplémentaire d'options que vous souhaitez configurer. 121 00:06:56,830 --> 00:07:02,480 C'est vraiment, vraiment sympa et très utile pour ce genre de chose. 122 00:07:02,480 --> 00:07:06,970 C'est tout ce que nous devons commencer à obtenir nos mains sales dans les API. 123 00:07:06,970 --> 00:07:10,220 >> Je vais évoquer quelques exemples et d'explorer leurs différentes propriétés 124 00:07:10,220 --> 00:07:13,150 et pourquoi ils sont utiles pour différents types de choses. 125 00:07:13,150 --> 00:07:15,570 La première chose que je vais effectivement vous montrer quelque chose que je travaille sur 126 00:07:15,570 --> 00:07:18,310 à mon laboratoire de recherche, qui est une visionneuse Ngram, 127 00:07:18,310 --> 00:07:23,270 et au fond l'idée d'une visionneuse Ngram est que vous pouvez lancer une recherche sur une sorte de mot 128 00:07:23,270 --> 00:07:28,840 ou une phrase et voir combien de fois il est apparu dans un certain ensemble de textes au fil du temps. 129 00:07:28,840 --> 00:07:33,160 Cet exemple ici, c'est cet ensemble de données de bébés 130 00:07:33,160 --> 00:07:36,480 qui sont nés à New York entre 1920 et 2000. 131 00:07:36,480 --> 00:07:40,090 On peut chercher, par exemple, pour le nom de Jennifer, 132 00:07:40,090 --> 00:07:44,400 et nous voyons que les pré-années 1960, il n'était pas vraiment utilisé tant que ça, 133 00:07:44,400 --> 00:07:48,900 puis à mesure que nous en ans plus tard il devient de plus en plus utilisé. 134 00:07:48,900 --> 00:07:53,680 Nous pouvons aussi faire des comparaisons, si l'on compare à Jennifer, par exemple, Thomas, 135 00:07:53,680 --> 00:07:56,520 nous pouvons voir Thomas a été assez répandue à travers l'histoire, 136 00:07:56,520 --> 00:07:58,780 tandis que Jennifer est un nom plus récent. 137 00:07:58,780 --> 00:08:00,590 Nous pouvons faire ce genre de chose. 138 00:08:00,590 --> 00:08:02,460 >> Comment cela fonctionne-t application? 139 00:08:02,460 --> 00:08:06,030 Fondamentalement, il fonctionne via une API. 140 00:08:06,030 --> 00:08:08,660 En d'autres termes, nous avons ici certains paramètres. 141 00:08:08,660 --> 00:08:11,360 Nous avons les paramètres de ce que nous sommes en train de chercher, 142 00:08:11,360 --> 00:08:13,720 qui sont ces noms, et puis nous avons quelques propriétés d'autres, 143 00:08:13,720 --> 00:08:16,570 comme l'axe des Y et l'axe X. 144 00:08:16,570 --> 00:08:18,440 Vous pouvez voir que nous avons quelques options différentes dans la mesure où la 145 00:08:18,440 --> 00:08:20,860 résolution temporelle à utiliser et ce genre de chose. 146 00:08:20,860 --> 00:08:26,700 Nous avons ces options dans la mesure où les données que nous voulons réellement à partir de la base de données, 147 00:08:26,700 --> 00:08:29,400 et nous voulons obtenir que les données de retour d'une certaine façon utile. 148 00:08:29,400 --> 00:08:34,020 Normalement, si nous interroger directement la base de données il serait trier du être une douleur à faire 149 00:08:34,020 --> 00:08:38,970 parce que vraisemblablement ces données sur les noms de bébé vit dans une base de données quelque part, 150 00:08:38,970 --> 00:08:42,789 et il serait très compliqué d'avoir à l'interroger manuellement 151 00:08:42,789 --> 00:08:45,830 et de décider exactement quelles sont les données à retourner. 152 00:08:45,830 --> 00:08:49,300 En d'autres termes, nous ne se soucient que Jennifer et Thomas, dans ce cas, 153 00:08:49,300 --> 00:08:53,410 et nous ne se soucient que sur un certain axe et tout ce genre de choses. 154 00:08:53,410 --> 00:08:55,720 >> Comment peut-on contourner ce problème? 155 00:08:55,720 --> 00:09:01,200 Pour creuser dans cette API un peu plus, je vais vous montrer un autre exemple de cette plate-forme 156 00:09:01,200 --> 00:09:04,490 qui utilise un ensemble de données légèrement différente. 157 00:09:04,490 --> 00:09:09,950 Cet ensemble de données, au lieu d'être des noms de bébé, est en fait l'ensemble de la 158 00:09:09,950 --> 00:09:12,460 imprimer la publication de base de données Open Library, 159 00:09:12,460 --> 00:09:18,410 qui est une source immense de textes publiés au cours des quelque 100 dernières années. 160 00:09:18,410 --> 00:09:23,540 L'idée est que nous avons cette compository des millions et des millions de texte, 161 00:09:23,540 --> 00:09:27,420 que nous pouvons maintenant rechercher des mots et expressions différentes po 162 00:09:27,420 --> 00:09:30,840 Voici un exemple qui varie un peu différemment de l'exemple précédent 163 00:09:30,840 --> 00:09:33,350 Je vous ai montré, qui est que nous avons ces 3 requêtes de recherche, 164 00:09:33,350 --> 00:09:36,290 la guerre, la guerre et le mot français pour la guerre, qui est guerre. 165 00:09:36,290 --> 00:09:40,380 Et nous recherchons dans les 3 différentes sections de la base de données totale. 166 00:09:40,380 --> 00:09:45,080 En d'autres termes, dans cette première requête, nous ne faisons que chercher aux Etats-Unis, 167 00:09:45,080 --> 00:09:51,150 dans le second que dans le Royaume-Uni, et le troisième seulement à partir ouvrages publiés en France. 168 00:09:51,150 --> 00:09:53,120 Nous voyons des tendances intéressantes se dégagent. 169 00:09:53,120 --> 00:09:58,180 Par exemple, on voit bien ici que- 170 00:09:58,180 --> 00:10:02,410 oups, j'ai foiré l'axe un peu, mais vous pouvez voir à droite de cette gamme ici 171 00:10:02,410 --> 00:10:05,730 autour de la guerre civile il ya un grand pic dans l'édition américaine 172 00:10:05,730 --> 00:10:08,340 mais pas un grand pic dans les deux autres, et c'est évidemment parce 173 00:10:08,340 --> 00:10:10,880 la guerre de Sécession qui se passait à ce moment-là. 174 00:10:10,880 --> 00:10:13,890 >> Nous pouvons voir des trucs cool là-bas, 175 00:10:13,890 --> 00:10:17,070 mais ce que nous nous soucions vraiment est de savoir comment nous avons obtenu ces données. 176 00:10:17,070 --> 00:10:21,320 Je vais vous emmener dans les coulisses de cette application en un peu. 177 00:10:21,320 --> 00:10:24,540 Une astuce est de savoir si vous travaillez avec le site et le type de veux savoir 178 00:10:24,540 --> 00:10:27,430 ce qui se passe dans les coulisses, vous pouvez ouvrir les outils de développement. 179 00:10:27,430 --> 00:10:30,200 Je vais être en utilisant les outils de développement de Chrome, et d'apprendre à ceux qui 180 00:10:30,200 --> 00:10:35,160 vous pouvez faire le contrôle, décalage, J, et qui vous emmène à la console JavaScript. 181 00:10:35,160 --> 00:10:37,420 Il ya quelques onglets ici. 182 00:10:37,420 --> 00:10:39,680 Ils peuvent tous être très utile dans des circonstances différentes, mais je me soucie le réseau 183 00:10:39,680 --> 00:10:44,150 onglet en ce moment, et j'ai vraiment besoin d'actualiser pour obtenir ce travail. 184 00:10:44,150 --> 00:10:50,180 Oh, désolé. 185 00:10:50,180 --> 00:10:52,320 Il aime donner un exemple au hasard. 186 00:10:52,320 --> 00:10:54,700 Bon, nous allons utiliser cet exemple au lieu-là. 187 00:10:54,700 --> 00:11:01,330 >> L'idée est qu'il ya cette API ici, 188 00:11:01,330 --> 00:11:05,330 et vous pouvez voir exactement ce que l'API est de retour. 189 00:11:05,330 --> 00:11:10,220 Ceci est ce que l'application est un retour de l'API avoir envoyé cette demande. 190 00:11:10,220 --> 00:11:13,680 Permettez-moi de zoomer un peu, 191 00:11:13,680 --> 00:11:18,340 et l'on peut voir en gros c'est juste une série de paires clé-valeur au format JSON. 192 00:11:18,340 --> 00:11:23,220 En d'autres termes, nous avons cette table de hachage qui est ici mappage des valeurs. 193 00:11:23,220 --> 00:11:26,440 En d'autres termes, c'est la cartographie années à des valeurs. 194 00:11:26,440 --> 00:11:32,600 En 1765, nous avons d'abord quel que soit le mot recherché est utilisée 90 fois 195 00:11:32,600 --> 00:11:35,810 sur 1 million, donc nous revenons à ce résultat. 196 00:11:35,810 --> 00:11:40,280 Ce n'est pas exactement JSON puisque nous avons cette tête fait peu ici, 197 00:11:40,280 --> 00:11:45,630 mais remarquez que cet objet tout ici est juste un gros blob JSON. 198 00:11:45,630 --> 00:11:51,070 Nous avons ici un tableau qui contient cet élément de l'ensemble, 199 00:11:51,070 --> 00:11:55,590 et vous pouvez voir que tout élément se termine là, et puis nous avons un autre élément important 200 00:11:55,590 --> 00:11:59,430 qui va tout le chemin jusqu'à la fin, et qui se termine ici. 201 00:11:59,430 --> 00:12:02,200 Nous avons une gamme très grand avec 2 objets qu'elle contient, 202 00:12:02,200 --> 00:12:04,630 et chacun de ces objets est une table de hachage. 203 00:12:04,630 --> 00:12:07,340 Vous pouvez voir à l'intérieur de chacun de ces HashMaps nous avons une correspondance 204 00:12:07,340 --> 00:12:12,700 de cette valeur de l'indice à 0 et la valeur de cette valeur à une autre table de hachage, 205 00:12:12,700 --> 00:12:18,360 qui est encore une fois la cartographie valeurs de l'axe X à valeurs de l'axe Y. 206 00:12:18,360 --> 00:12:20,970 >> Vous pouvez voir JSON devient un peu compliqué, mais dans l'ensemble, 207 00:12:20,970 --> 00:12:24,190 c'est en fait très utile, et il est très facile d'accès par rapport à 208 00:12:24,190 --> 00:12:27,390 d'autres formes de notation. 209 00:12:27,390 --> 00:12:30,550 Quant à ce que nous sommes en train d'envoyer des données à l'API pour obtenir, 210 00:12:30,550 --> 00:12:34,690 Je vais aller dans le back-end un peu ici. 211 00:12:34,690 --> 00:12:39,850 C'est le gros fichier JavaScript qui est la manipulation de toutes les interactions de l'application web, 212 00:12:39,850 --> 00:12:44,810 et nous ne se soucient pas plus de cela, mais nous nous soucions de certaines d'entre elles. 213 00:12:44,810 --> 00:12:47,410 Par exemple, nous nous soucions de cette fonction BuildQuery, 214 00:12:47,410 --> 00:12:50,670 et l'idée de cette fonction est fondamentalement il regarde autour de la page, 215 00:12:50,670 --> 00:12:53,750 comprendre ce que l'utilisateur veut interroger, en d'autres termes, 216 00:12:53,750 --> 00:12:57,090 contrôle de ces boîtes où ils ont leurs entrées termes de recherche, 217 00:12:57,090 --> 00:13:01,380 vérifier les différentes valeurs de l'axe Y et X qu'ils ont choisis et tout ce genre de chose, 218 00:13:01,380 --> 00:13:06,650 et il va cracher cette valeur requête, que je peux ensuite envoyer à l'API. 219 00:13:06,650 --> 00:13:09,180 >> Cela semble compliqué, et il est assez compliqué 220 00:13:09,180 --> 00:13:18,090 mais ce que je vais faire, en fait, je fais déjà ce qui est génial, 221 00:13:18,090 --> 00:13:21,640 c'est que je vais avoir la console d'imprimer exactement ce que la valeur requête 222 00:13:21,640 --> 00:13:28,110 qu'il est hors envoyer à l'API. 223 00:13:28,110 --> 00:13:30,870 En fait, c'est juste ici. Désolé, il émet beaucoup de choses. 224 00:13:30,870 --> 00:13:33,690 Mais c'est ce qui nous intéresse, cet objet ici. 225 00:13:33,690 --> 00:13:35,300 C'est l'objet de la requête. 226 00:13:35,300 --> 00:13:40,670 En d'autres termes, c'est exactement ce que l'application web envoie à l'API, 227 00:13:40,670 --> 00:13:45,730 et nous allons donc regarder à l'intérieur un peu, et nous voyons que nous avons quelques valeurs ici. 228 00:13:45,730 --> 00:13:48,710 Nous voyons que nous avons ce type de comptage, qui est occurrences par million de mots, 229 00:13:48,710 --> 00:13:51,460 ce qui est exactement ce que nous avons choisie dans l'axe Y ici. 230 00:13:51,460 --> 00:13:53,740 C'est là que vient. 231 00:13:53,740 --> 00:13:58,010 Nous avons une base de données de valeur, ce qui signifie qu'il ya une certaine base de données 232 00:13:58,010 --> 00:14:01,610 que ces données sont en vie, et nous voulons accéder à ces données spécifiquement 233 00:14:01,610 --> 00:14:04,950 par opposition aux données des noms de bébé, par exemple. 234 00:14:04,950 --> 00:14:08,320 Ensuite, nous avons des groupes de cette valeur, 235 00:14:08,320 --> 00:14:12,090 ce qui veut dire que nous voulons faire une recherche par an, contre 236 00:14:12,090 --> 00:14:16,030 une valeur X autre axe. 237 00:14:16,030 --> 00:14:19,040 Ensuite, nous avons une méthode, que certains API va faire des choses multiples. 238 00:14:19,040 --> 00:14:22,360 En d'autres termes, cette API peut également renvoyer d'autres types de données, 239 00:14:22,360 --> 00:14:27,740 mais dans ce cas, nous voulons que la cartographie des valeurs de l'axe X à valeurs de l'axe Y. 240 00:14:27,740 --> 00:14:30,730 C'est ce qui est dit de faire ça là-bas, 241 00:14:30,730 --> 00:14:35,020 et nous avons ce tableau de recherche des limites, qui contient 2 valeurs. 242 00:14:35,020 --> 00:14:40,720 Le premier est ce que nous voyons ici, ce qui est l'ensemble des valeurs 243 00:14:40,720 --> 00:14:43,020 contenu à l'intérieur de cette boîte première petite au sommet. 244 00:14:43,020 --> 00:14:47,570 >> En d'autres termes, nous voulons chercher le mot bataille, et nous voulons filtrer 245 00:14:47,570 --> 00:14:51,920 par les textes en anglais au sein de la littérature américaine. 246 00:14:51,920 --> 00:14:54,590 Nous avons ce pays, qui est Etats-Unis. 247 00:14:54,590 --> 00:14:59,130 Nous avons une langue, soit l'anglais, nous avons donc toutes ces différentes parties 248 00:14:59,130 --> 00:15:02,690 qui sont tous raconter l'API exactement ce que nous voulons. 249 00:15:02,690 --> 00:15:04,940 Nous ne savons pas quelles sont les données que nous obtenons est encore, 250 00:15:04,940 --> 00:15:10,970 mais nous savons que les données va prendre une certaine forme. 251 00:15:10,970 --> 00:15:13,650 Cet exemple est une sorte de sur le côté compliqué, 252 00:15:13,650 --> 00:15:16,180 et vous ne serait pas nécessairement en utilisant l'API de ce complexe, 253 00:15:16,180 --> 00:15:20,600 mais c'est pour vous montrer la portée et la puissance de ce que peuvent faire les API. 254 00:15:20,600 --> 00:15:24,980 En d'autres termes, en utilisant un système relativement simple requête nous avons essentiellement une zone de saisie 255 00:15:24,980 --> 00:15:29,490 avec un sélecteurs de quelques autres dans des lieux différents. 256 00:15:29,490 --> 00:15:32,010 >> Permettez-moi de faire un zoom avant ici. 257 00:15:32,010 --> 00:15:37,720 Nous avons une zone de saisie avec quelques sélections de métadonnées différents, 258 00:15:37,720 --> 00:15:40,610 et nous avons l'axe Y et l'axe X sélections. 259 00:15:40,610 --> 00:15:42,830 Nous n'avons pas vraiment que beaucoup de domaines, 260 00:15:42,830 --> 00:15:46,210 et nous pouvons voir très facilement que nous sommes en mesure d'interroger une sorte d'API 261 00:15:46,210 --> 00:15:48,510 et récupérer des données, puis le mettre dans ce tableau, 262 00:15:48,510 --> 00:15:52,080 qui va ensuite l'afficher de manière utile. 263 00:15:52,080 --> 00:15:54,970 Pour un autre exemple qui pourrait être un peu plus familier pour vous les gars 264 00:15:54,970 --> 00:15:56,510 nous allons tourner vers Facebook. 265 00:15:56,510 --> 00:15:59,440 API de Facebook est appelé le graphe Facebook, 266 00:15:59,440 --> 00:16:04,390 et au fond ce que cela signifie que Facebook se voit comme cette gigantesque base de données 267 00:16:04,390 --> 00:16:08,000 des lots de pièces différentes qui ont toutes certaines relations les uns aux autres. 268 00:16:08,000 --> 00:16:11,070 En d'autres termes, je suis un utilisateur de Facebook, j'ai donc un profil 269 00:16:11,070 --> 00:16:14,310 et j'ai aussi quelques amis, et chacun d'eux a un profil, 270 00:16:14,310 --> 00:16:17,580 et chacun de mes amis a un mur, qui a différents commentaires à ce sujet, 271 00:16:17,580 --> 00:16:20,800 et chacun de ces commentaires a goûts et tous ce genre de chose. 272 00:16:20,800 --> 00:16:23,100 >> Il ya beaucoup de différentes parties à Facebook. 273 00:16:23,100 --> 00:16:26,670 Il s'agit d'une API très complexe, et il ya des tonnes que vous pouvez faire avec lui, 274 00:16:26,670 --> 00:16:28,450 mais c'est en fait assez simple à utiliser. 275 00:16:28,450 --> 00:16:33,680 Je vais commencer par aller à graph.facebook.com / billyjanitsch, 276 00:16:33,680 --> 00:16:38,430 qui est mon nom de compte unique, et votre nom de compte sera soit 277 00:16:38,430 --> 00:16:43,710 une sorte de mot si vous l'avez choisi, ou il pourrait s'agir d'une chaîne de nombres. 278 00:16:43,710 --> 00:16:46,360 Ce que nous obtenons est assez basique informations. 279 00:16:46,360 --> 00:16:50,460 Nous voyons que j'ai un prénom, ce qui est Billy, un nom de famille, qui est Janitsch. 280 00:16:50,460 --> 00:16:53,370 Il s'agit d'un identifiant unique Facebook que j'ai. 281 00:16:53,370 --> 00:16:57,920 Vous pouvez voir que je suis homme et que j'ai mon réglage de la langue 282 00:16:57,920 --> 00:17:01,290 à l'anglais britannique. 283 00:17:01,290 --> 00:17:03,490 En d'autres termes, nous voyons des informations de base ici. 284 00:17:03,490 --> 00:17:08,670 Ce n'est pas trop, mais cela nous donne une idée de ce qui est là. 285 00:17:08,670 --> 00:17:10,849 >> Nous pouvons faire la même chose à David Malan, par exemple. 286 00:17:10,849 --> 00:17:13,599 Je crois que son nom est dmalan. 287 00:17:13,599 --> 00:17:16,369 Nous voyons David Malan a un ID unique. 288 00:17:16,369 --> 00:17:19,300 Il a un nom, le prénom, deuxième prénom, nom de famille. 289 00:17:19,300 --> 00:17:24,210 Nous voyons aussi qu'il est mâle et a sa langue réglée sur l'anglais américain. 290 00:17:24,210 --> 00:17:26,869 En d'autres termes, nous voyons des informations assez basique ici. 291 00:17:26,869 --> 00:17:28,860 Maintenant, qu'est-ce qui se passe si nous essayons de vérifier quelque chose d'autre? 292 00:17:28,860 --> 00:17:33,060 Disons que je suis intéressé par ce que David Malan a aimé sur Facebook. 293 00:17:33,060 --> 00:17:36,860 Je peux faire / aime. Maintenant, nous avons rencontré un problème. 294 00:17:36,860 --> 00:17:39,280 Nous avons une sorte d'erreur qui dit un jeton d'accès 295 00:17:39,280 --> 00:17:41,660 est nécessaire pour demander cette ressource. 296 00:17:41,660 --> 00:17:44,730 Mais si on y pense, ce que fait réellement sens, car ce serait bizarre 297 00:17:44,730 --> 00:17:47,830 si vous pouviez accéder à chaque partie de la base de données de Facebook 298 00:17:47,830 --> 00:17:50,170 simplement d'une sorte d'API simple, non? 299 00:17:50,170 --> 00:17:56,040 En d'autres termes, sans doute votre information ne peut pas être consulté par toute personne qui le veut. 300 00:17:56,040 --> 00:17:58,330 >> Cette erreur est précisément ce que cela signifie. 301 00:17:58,330 --> 00:18:03,630 Certaines API besoin de certaines autorisations pour accéder à leurs données. 302 00:18:03,630 --> 00:18:06,940 Et API encore plus avancé, comme le Facebook un, 303 00:18:06,940 --> 00:18:09,840 il faudra certaines autorisations de faire certaines choses. 304 00:18:09,840 --> 00:18:12,650 Je peux voir cette information de base à propos de David Malan. 305 00:18:12,650 --> 00:18:15,950 Je peux voir qu'il est homme et qu'il vit aux États-Unis, 306 00:18:15,950 --> 00:18:19,270 mais je ne peux vraiment rien passé. 307 00:18:19,270 --> 00:18:23,050 Pour contourner ce problème pour l'instant, Facebook a ce bel outil 308 00:18:23,050 --> 00:18:27,690 qui est le graphe API explorateur, et l'idée de ce que c'est que vous pouvez trier des 309 00:18:27,690 --> 00:18:31,880 faire des autorisations pour vous en fonction de votre propre compte 310 00:18:31,880 --> 00:18:35,680 et puis voir des choses qui précisément votre compte peuvent voir. 311 00:18:35,680 --> 00:18:45,120 Par exemple, si je fais graph.facebook.com/billyjanitsch/likes- 312 00:18:45,120 --> 00:18:53,510 oups, je suppose que je dois revalider mon jeton ici. 313 00:18:53,510 --> 00:18:55,950 D'accord. 314 00:18:55,950 --> 00:19:01,740 Si je fais ça, génial, maintenant je vois que je reçois cet objet en arrière 315 00:19:01,740 --> 00:19:06,300 qui dit que j'aime les nouilles de piscine, qui se trouvent dans la catégorie Jeux et Jouets. 316 00:19:06,300 --> 00:19:08,620 J'aime les morses, qui sont dans la catégorie des animaux. 317 00:19:08,620 --> 00:19:10,180 Ce sont mes goûts réels Facebook. 318 00:19:10,180 --> 00:19:13,280 Ils sont un peu embarrassant. 319 00:19:13,280 --> 00:19:16,090 >> Mais nous pouvons voir ces données sont tous retournés en JSON. 320 00:19:16,090 --> 00:19:18,160 Il est assez lisible. 321 00:19:18,160 --> 00:19:20,970 En d'autres termes, nous avons cette cartographie des données à une sorte de tableau, 322 00:19:20,970 --> 00:19:25,220 et chaque élément de cette matrice est une table de hachage qui associe 323 00:19:25,220 --> 00:19:28,530 le nom d'un analogue, et la catégorie d'un analogue. 324 00:19:28,530 --> 00:19:31,240 Chaque analogue a une ID unique. 325 00:19:31,240 --> 00:19:34,510 Il ya toutes sortes de choses différentes des données que nous pouvons obtenir, 326 00:19:34,510 --> 00:19:37,980 et si vous êtes intéressé à utiliser l'API de Facebook pour un projet CS50 finale 327 00:19:37,980 --> 00:19:40,720 ou quelque chose comme ça c'est en fait tout à fait faisable. 328 00:19:40,720 --> 00:19:44,260 Fondamentalement la façon de contourner la chose authentification Facebook est 329 00:19:44,260 --> 00:19:48,030 utilise un système appelé OAuth, ou l'authentification Open, 330 00:19:48,030 --> 00:19:52,870 et je ne veux pas en parler maintenant parce que OAuth ou l'autre type 331 00:19:52,870 --> 00:19:56,060 d'authentification a tendance à varier beaucoup entre les différentes API, 332 00:19:56,060 --> 00:19:58,320 pour que je puisse passer beaucoup de temps va sur chacun d'eux, 333 00:19:58,320 --> 00:20:01,170 mais ils sont en fait assez explicite. 334 00:20:01,170 --> 00:20:04,050 >> Si vous Google Facebook API, il est très lisible. 335 00:20:04,050 --> 00:20:06,670 Il ya un spec ensemble. 336 00:20:06,670 --> 00:20:10,210 Par exemple, il s'agit de la documentation de l'API Facebook, 337 00:20:10,210 --> 00:20:14,170 et vous pouvez voir que je suis sur la page de l'utilisateur, donc je peux tout apprendre sur les différentes sortes de choses 338 00:20:14,170 --> 00:20:17,170 qui sont disponibles pour obtenir des données pour autant que 339 00:20:17,170 --> 00:20:21,550 ainsi que les différentes autorisations dont j'ai besoin pour y accéder. 340 00:20:21,550 --> 00:20:25,470 Comme nous l'avons vu, nous n'avons pas besoin d'autorisations pour accéder au nom ou selon le sexe, 341 00:20:25,470 --> 00:20:29,380 mais au-delà que nous avons besoin d'autorisations pour la plupart des choses. 342 00:20:29,380 --> 00:20:33,040 Cette page, ou plutôt, ce site vous dira également comment obtenir 343 00:20:33,040 --> 00:20:35,640 un jeton pour être en mesure de vous authentifier. 344 00:20:35,640 --> 00:20:39,290 La plupart des systèmes d'authentification utiliser une sorte de jeton 345 00:20:39,290 --> 00:20:42,880 où vous obtenez cette valeur unique, qui est une chaîne très longue et aléatoire, 346 00:20:42,880 --> 00:20:46,240 et de cette façon ils peuvent associer la demande que vous faites avec vous. 347 00:20:46,240 --> 00:20:50,560 En d'autres termes, ils savent que vous ne faites pas quelque chose de suspect avec leurs données. 348 00:20:50,560 --> 00:20:53,340 Ils savent exactement ce que vous obtenez. 349 00:20:53,340 --> 00:20:56,180 Ils savent aussi que vous avez l'autorisation d'afficher cette information. 350 00:20:56,180 --> 00:20:59,110 >> Si vous avez fait une application Facebook et votre application a certains utilisateurs, 351 00:20:59,110 --> 00:21:03,380 et les utilisateurs ont permis à cette application d'accéder à certaines parties de leur profil, 352 00:21:03,380 --> 00:21:07,790 alors tout ce que touche l'API ou d'un jeton que cette application utilise 353 00:21:07,790 --> 00:21:11,090 sera en mesure d'accéder aux données pour les utilisateurs. 354 00:21:11,090 --> 00:21:13,780 Cela peut paraître compliqué, mais il n'est pas trop mal, 355 00:21:13,780 --> 00:21:16,810 et si vous voulez utiliser Facebook Je recommande fortement que vous 356 00:21:16,810 --> 00:21:18,990 envisager de jouer avec leur API. 357 00:21:18,990 --> 00:21:21,610 C'est très cool, et vous pouvez faire beaucoup de choses différentes avec elle. 358 00:21:21,610 --> 00:21:24,880 Si l'utilisateur vous accorde ces autorisations, vous pouvez même revenir à l'API 359 00:21:24,880 --> 00:21:28,820 et dire que je veux réellement poster sur le mur de cet utilisateur, ou je veux avoir les poster une photo, 360 00:21:28,820 --> 00:21:32,390 et c'est pourquoi sur votre fil de nouvelles que vous obtenez parfois ces choses ennuyeuses 361 00:21:32,390 --> 00:21:37,840 disant que votre ami a regardé cette video sur une sorte de site de bizarre ou quelque chose comme ça. 362 00:21:37,840 --> 00:21:43,120 C'est parce que cette application a pu avoir accès à poster sur le mur de cette personne. 363 00:21:43,120 --> 00:21:48,350 L'idée générale, l'API de Facebook est assez compliqué, mais aussi très utile. 364 00:21:48,350 --> 00:21:53,220 Certainement intéressant vérifier si vous êtes encore à la recherche d'un projet final. 365 00:21:53,220 --> 00:21:57,930 >> Un autre ensemble d'API que je vais aller plus est CS50 API. 366 00:21:57,930 --> 00:22:00,070 Permettez-moi de faire un zoom avant ici. 367 00:22:00,070 --> 00:22:03,390 CS50 a effectivement mis en place toute une série d'API 368 00:22:03,390 --> 00:22:07,080 que vous pouvez utiliser pour un projet final ou tout simplement pour tout ce que vous faites. 369 00:22:07,080 --> 00:22:12,830 Et ils sont la plupart du temps liée à Harvard, et ils varient dans le menu HUDS, 370 00:22:12,830 --> 00:22:17,780 par exemple, à cette API Harvard événements, ce qui vous permettra de consulter la liste des 371 00:22:17,780 --> 00:22:21,290 différents événements qui se déroulent à l'Université Harvard et ce genre de chose. 372 00:22:21,290 --> 00:22:24,510 Et si on peut cliquer sur l'un quelconque d'entre eux et obtenir une spécification pour elle, 373 00:22:24,510 --> 00:22:28,090 que vous serez en mesure de trouver pour toute API, et l'idée est 374 00:22:28,090 --> 00:22:33,920 il vous permet de savoir, A, ce qu'il doit demander de l'API et comment en faire la demande. 375 00:22:33,920 --> 00:22:37,370 En d'autres termes, si je veux tous les événements qui se passent demain 376 00:22:37,370 --> 00:22:42,550 alors je dois bien évidemment lui donner cette date que je veux dans un certain format, 377 00:22:42,550 --> 00:22:46,030 et B, il va me dire exactement ce que ça va donner en retour pour moi. 378 00:22:46,030 --> 00:22:48,590 Il va dire que je vais vous renvoyer cet objet JSON, 379 00:22:48,590 --> 00:22:50,960 ou comme vous pouvez le voir, il existe des formats différents. 380 00:22:50,960 --> 00:22:54,050 >> Vous pouvez également retourner les données au format CSV, par exemple. 381 00:22:54,050 --> 00:22:57,620 Mais vous savez exactement comment ces données va regarder quand vous le récupérer 382 00:22:57,620 --> 00:23:00,610 de sorte que vous pouvez vous attendre à faire certaines choses avec elle. 383 00:23:00,610 --> 00:23:07,240 On peut faire défiler vers le bas et voir, par exemple, si nous voulons interroger l'API 384 00:23:07,240 --> 00:23:11,500 pour obtenir un calendrier, alors nous pouvons utiliser cette URL particulière 385 00:23:11,500 --> 00:23:16,480 et lui donner certains paramètres qui vont être les données que nous voulons exactement. 386 00:23:16,480 --> 00:23:19,540 Et de même, si nous voulons que les données en arrière dans un certain format, 387 00:23:19,540 --> 00:23:23,790 alors nous pouvons lui demander de transmettre les données dans un fichier CSV, 388 00:23:23,790 --> 00:23:27,700 et c'est juste un autre paramètre que nous passons à l'API. 389 00:23:27,700 --> 00:23:29,210 Beaucoup de choses cool à faire là-bas. 390 00:23:29,210 --> 00:23:32,550 Je recommande vivement de vérifier les API CS50. 391 00:23:32,550 --> 00:23:36,000 >> Je vais regarder cette API alimentaire Harvard en particulier pour un peu. 392 00:23:36,000 --> 00:23:39,870 Une chose que j'ai fait conçu ce site est Harvard Noms, 393 00:23:39,870 --> 00:23:44,930 qui utilise l'API alimentaire CS50 à récupérer le menu HUDS pour le jour. 394 00:23:44,930 --> 00:23:50,400 Et pour les gens des écoles de vulgarisation, HUDS est le service de restauration à Harvard. 395 00:23:50,400 --> 00:23:55,130 Qu'est-ce que vous obtenez est cette page qui contient tous les repas de la journée, et nous voyons le déjeuner. 396 00:23:55,130 --> 00:23:58,130 Nous avons quelques catégories différentes. Nous avons la fève et de la station de grains entiers. 397 00:23:58,130 --> 00:24:00,340 Nous avons le poste de riz brun. 398 00:24:00,340 --> 00:24:03,360 On peut voir pour le brunch, nous avons ces quelques aliments. 399 00:24:03,360 --> 00:24:07,030 Si on clique sur eux, alors nous obtenons l'information nutritionnelle. 400 00:24:07,030 --> 00:24:12,240 Vous voyez, c'est l'information nutritionnelle pour le pamplemousse, au cas où vous vous poseriez. 401 00:24:12,240 --> 00:24:14,870 Et de nouveau, nous allons scruter l'extrémité arrière un peu ici 402 00:24:14,870 --> 00:24:18,530 et de voir exactement ce que ce soit fait pour obtenir ces données. 403 00:24:18,530 --> 00:24:21,710 Et il se révèle ne pas être effectivement très complexe du tout. 404 00:24:21,710 --> 00:24:28,720 Ce fichier ressemble un peu désordonné, mais gardez à l'esprit que ce n'est manipulation de l'ensemble du site, 405 00:24:28,720 --> 00:24:34,130 et si je défiler vers le bas, nous voyons cette fonction de changement de données. 406 00:24:34,130 --> 00:24:36,630 >> Maintenant, juste pour être clair, ce qui est écrit dans CoffeeScript, 407 00:24:36,630 --> 00:24:39,570 qui est une langue que vous n'avez probablement pas vu avant. 408 00:24:39,570 --> 00:24:44,810 Mais il est assez lisible, donc je vais marcher à travers elle comme si elle était pseudocode. 409 00:24:44,810 --> 00:24:49,080 Changer la date est une fonction qui va prendre dans cette valeur de date, 410 00:24:49,080 --> 00:24:51,740 et il va aussi à prendre dans un premier, que nous ne se soucient pas autant. 411 00:24:51,740 --> 00:24:54,110 Mais la chose importante est qu'il a cette date, 412 00:24:54,110 --> 00:25:00,080 et cette date est le jour que nous voulons demander tous les produits alimentaires pour. 413 00:25:00,080 --> 00:25:04,030 Et puis, vous voyez, nous avons un peu de syntaxe ici, 414 00:25:04,030 --> 00:25:09,000 qui est essentiellement l'analyse de cette date dans un format lisible. 415 00:25:09,000 --> 00:25:11,920 En d'autres termes, l'API nécessite la date dans un certain format. 416 00:25:11,920 --> 00:25:17,390 Vous ne pouvez pas dire Novembre 16th, 2012 AD. 417 00:25:17,390 --> 00:25:20,320 Il ne saura pas quoi faire avec ça. Il veut la date dans un format spécifique. 418 00:25:20,320 --> 00:25:23,230 Tout ce que nous faisons ici, c'est lui donner exactement ce format, 419 00:25:23,230 --> 00:25:26,520 qui est une valeur d'année et un trait d'union, une valeur de mois, 420 00:25:26,520 --> 00:25:29,420 un autre trait d'union et la valeur de date. 421 00:25:29,420 --> 00:25:34,910 Et nous disons aussi que nous voulons que les données soient sortie au format JSON. 422 00:25:34,910 --> 00:25:37,560 >> Maintenant, nous faisons cette requête AJAX, et comme je l'ai mentionné plus tôt, 423 00:25:37,560 --> 00:25:41,680 jQuery a cette super fonction utile AJAX qui tout ce que vous devez faire est de spécifier 424 00:25:41,680 --> 00:25:45,780 quelques paramètres ici-bas, et il vous rendra exactement ce que vous voulez. 425 00:25:45,780 --> 00:25:50,490 Nous lui disant que l'URL que nous voulons qu'il aille à cette API est CS50 alimentaire, 426 00:25:50,490 --> 00:25:52,270 que nous avons obtenu à partir de la spécification. 427 00:25:52,270 --> 00:25:56,730 Nous disons que nous voulons que les données en JSON et que 428 00:25:56,730 --> 00:25:59,490 nous allons lui donner ces données que nous avons définies ici. 429 00:25:59,490 --> 00:26:02,670 C'est le jour où nous voulons que les produits alimentaires pour. 430 00:26:02,670 --> 00:26:07,790 Et puis tout ce que nous avons à faire est de définir une sorte de fonction de réussite, 431 00:26:07,790 --> 00:26:11,980 qui est essentiellement ce qui se passe lorsque l'API renvoie ces données. 432 00:26:11,980 --> 00:26:15,490 En d'autres termes, nous avons empaqueté tous les paramètres que nous voulons, 433 00:26:15,490 --> 00:26:20,530 qui dans ce cas est le jour où nous le voulons et le fait que nous le voulons en JSON, 434 00:26:20,530 --> 00:26:23,840 et nous l'envoyer à l'API, donc maintenant l'API est dit, d'accord, 435 00:26:23,840 --> 00:26:26,350 est ici vos données, je l'ai récupéré pour vous. 436 00:26:26,350 --> 00:26:29,930 Nous avons la fonction de réussite, ce qui signifie, étant donné que l'API 437 00:26:29,930 --> 00:26:32,230 retourne avec succès certaines données, que faisons-nous avec lui? 438 00:26:32,230 --> 00:26:35,980 >> Et il se trouve que tout ce que nous faire est d'appeler cette fonction de menu mise à jour 439 00:26:35,980 --> 00:26:42,680 avec tout ce que l'API est de retour, afin que nous puissions rechercher ce 440 00:26:42,680 --> 00:26:47,970 et de voir que tout ce que nous faisons, c'est en utilisant un tas de nouvelle syntaxe ici 441 00:26:47,970 --> 00:26:52,220 de mettre à jour le code HTML et d'insérer ces nouvelles données. 442 00:26:52,220 --> 00:26:56,580 Ce que cela permet, c'est que nous avons ces flèches de chaque côté, et on peut cliquer, 443 00:26:56,580 --> 00:27:01,060 et maintenant nous nous penchons sur les données pour le lendemain, et encore pour le lendemain, 444 00:27:01,060 --> 00:27:04,820 et chaque fois qu'il est mise à jour que valeur de date et d'interrogation de l'API, 445 00:27:04,820 --> 00:27:07,510 reprendre certaines données et de le mettre sur le site. 446 00:27:07,510 --> 00:27:10,590 Encore une fois, vous pouvez le voir, super, super utile. 447 00:27:10,590 --> 00:27:14,410 Cette application m'a fallu quelques heures pour pirater ensemble, 448 00:27:14,410 --> 00:27:20,140 et j'ai une expérience un peu plus, évidemment, mais votre CS50 projet final 449 00:27:20,140 --> 00:27:22,870 peut ressembler à quelque chose comme ceci beaucoup. 450 00:27:22,870 --> 00:27:29,540 >> API sont super puissant pour le montant de l'effort qu'ils prennent. 451 00:27:29,540 --> 00:27:32,800 La dernière chose que je vais passer en revue quelques-uns est une API plus large. 452 00:27:32,800 --> 00:27:35,480 Je ne vais pas aussi loin dans leur autant que ce qu'ils font précisément, 453 00:27:35,480 --> 00:27:38,740 mais je vais vous donner une idée de ce qui existe. 454 00:27:38,740 --> 00:27:42,700 2 plus vraiment utile, si vous êtes intéressé par l'analyse des données ou de visualisation 455 00:27:42,700 --> 00:27:45,960 ou quelque chose comme ça, et sont Freebase Wikipedia. 456 00:27:45,960 --> 00:27:49,800 Wikipedia-je suppose que vous le savez tous, est une encyclopédie libre en ligne, 457 00:27:49,800 --> 00:27:53,230 et il a fait une API, donc si vous voulez, par exemple, 458 00:27:53,230 --> 00:27:56,250 obtenir tous les textes et les articles pour le poulpe 459 00:27:56,250 --> 00:27:58,030 vous pouvez très facilement faire cela. 460 00:27:58,030 --> 00:28:02,300 Il suffit de dire hey, Wikipedia API, j'aimerais les données renvoyées celui-ci, 461 00:28:02,300 --> 00:28:07,010 et je le voudrais dans ce format, et l'article que j'aimerais, c'est le poulpe, 462 00:28:07,010 --> 00:28:09,820 et très vite, il vous rendra cette information. 463 00:28:09,820 --> 00:28:12,230 Cela peut être très utile si vous voulez faire une sorte de site 464 00:28:12,230 --> 00:28:16,200 que c'est une meilleure visualisation pour Wikipedia ou quelque chose comme ça. 465 00:28:16,200 --> 00:28:21,350 >> Freebase est une sorte de semblable, même si c'est un peu plus difficile dans la mesure où l'API. 466 00:28:21,350 --> 00:28:24,390 Freebase est comme Wikipedia en ce qu'elle est une encyclopédie en ligne 467 00:28:24,390 --> 00:28:29,050 qui contient beaucoup, beaucoup de données différentes sur toutes sortes de sujets différents, 468 00:28:29,050 --> 00:28:33,150 mais il est stocké dans une base de données relationnelle, ce qui est légèrement différente de Wikipedia. 469 00:28:33,150 --> 00:28:36,410 Wikipedia a ses articles et objets liés à d'autres articles, 470 00:28:36,410 --> 00:28:38,860 mais la plupart du temps, si vous voulez que les données pour le poulpe, 471 00:28:38,860 --> 00:28:41,990 vous allez à l'article poulpe, obtenir ces données, et que vous avez un tas de texte 472 00:28:41,990 --> 00:28:43,830 sur les poulpes, c'est très bien. 473 00:28:43,830 --> 00:28:46,870 Freebase fonctionne d'une manière un peu plus compliqué que dans 474 00:28:46,870 --> 00:28:48,930 tout est lié à une autre. 475 00:28:48,930 --> 00:28:52,620 En d'autres termes, si nous recherchons pour le poulpe 476 00:28:52,620 --> 00:28:54,940 alors il a un tas de catégories qui lui sont associés. 477 00:28:54,940 --> 00:28:57,920 >> Par exemple, c'est un animal, il vit sous l'eau, 478 00:28:57,920 --> 00:28:59,710 il a une certaine température du corps. 479 00:28:59,710 --> 00:29:01,210 Je ne sais pas. 480 00:29:01,210 --> 00:29:04,230 Et toutes ces catégories sont des liens vers d'autres endroits où vous pouvez aller 481 00:29:04,230 --> 00:29:06,640 de voir les choses avec cette même catégorie. 482 00:29:06,640 --> 00:29:13,450 En d'autres termes, l'ensemble des données poulpe qui contiennent un lien vers le jeu de données pour tous les animaux, 483 00:29:13,450 --> 00:29:16,790 et qui me permettrait de se déplacer dans la base de données très rapidement. 484 00:29:16,790 --> 00:29:21,740 Cela peut être très utile si vous faites quelque chose comme des comparaisons. 485 00:29:21,740 --> 00:29:24,490 En d'autres termes, étant donné une certaine chose, vous voulez voir 486 00:29:24,490 --> 00:29:27,890 qu'est-ce que c'est lié à et voir ce que cela n'est pas lié à. 487 00:29:27,890 --> 00:29:30,700 Ce genre de chose. Il peut être utile dans un certain nombre de façons. 488 00:29:30,700 --> 00:29:34,250 Si vous cherchez plus d'un défi et d'être capable de faire des choses plus complexes 489 00:29:34,250 --> 00:29:38,740 Je voudrais envisager de prendre un coup d'oeil à l'API Freebase. 490 00:29:38,740 --> 00:29:44,670 Mais surtout, Wikipedia est un endroit très simple d'aller aussi loin que d'obtenir de l'information. 491 00:29:44,670 --> 00:29:48,340 Un autre endroit que je vais regarder, c'est Last.fm, et je vais en fait aller sur le site 492 00:29:48,340 --> 00:29:53,800 dans le cas où certaines personnes ne sont pas familiers, mais Last.fm est essentiellement une musique 493 00:29:53,800 --> 00:29:57,220 les goûts et les sites Web des recommandations. 494 00:29:57,220 --> 00:29:59,000 Vous pouvez créer un compte. 495 00:29:59,000 --> 00:30:04,250 Vous pouvez commencer téléchargement de musique à partir de votre lecteur de musique 496 00:30:04,250 --> 00:30:08,020 sur le site et, fondamentalement, il va commencer à vous donner des recommandations musicales 497 00:30:08,020 --> 00:30:10,030 basée sur ce que vous écoutez. 498 00:30:10,030 --> 00:30:14,270 >> Par exemple, si vous allez à votre page profil de ceci est le mien- 499 00:30:14,270 --> 00:30:18,180 vous pouvez voir que vous avez une liste de pistes récemment écouté. 500 00:30:18,180 --> 00:30:22,550 Vous pouvez voir l'ensemble artistes préférés, tous ce genre de chose, 501 00:30:22,550 --> 00:30:25,280 et encore une fois, il ya une API gros derrière Last.fm, 502 00:30:25,280 --> 00:30:29,360  et vous pouvez l'utiliser pour faire des tas de choses vraiment cool. 503 00:30:29,360 --> 00:30:38,870 Par exemple, je vais aller à la page d'un ami qui a ce site Last.fm outils. 504 00:30:38,870 --> 00:30:42,380 Il s'agit en fait d'une autre plate-forme qui est construit sur l'API de Last.fm, 505 00:30:42,380 --> 00:30:45,420 et il fait un certain nombre de jolies choses intéressantes. 506 00:30:45,420 --> 00:30:50,260 Si je me connecte avec mon nom d'utilisateur, par exemple, 507 00:30:50,260 --> 00:30:53,110 Je peux lui demander de générer un nuage de tags, par exemple, 508 00:30:53,110 --> 00:30:56,480 et ce que cela va faire, c'est de me redonner une image de 509 00:30:56,480 --> 00:30:59,850 tous les genres et ce genre de chose que j'aime écouter. 510 00:30:59,850 --> 00:31:01,410 Comment se fait-il cela? 511 00:31:01,410 --> 00:31:05,670 Très fondamentalement, il est dit à l'API Last.fm voici cet utilisateur. 512 00:31:05,670 --> 00:31:10,710 Je voudrais savoir le genre de chaque chanson qu'ils ont jamais écouté, 513 00:31:10,710 --> 00:31:15,130 et vous pouvez le faire en faisant un appel assez simple AJAX pour l'API Last.fm. 514 00:31:15,130 --> 00:31:18,990 Vous obtiendrez de retour d'une grande liste, et il est évident que d'autres choses qui se fait 515 00:31:18,990 --> 00:31:22,280 pour le transformer en un nuage de mots, mais vous pouvez voir l'ensemble 516 00:31:22,280 --> 00:31:25,850 il est très facile d'accès et très facile à utiliser. 517 00:31:25,850 --> 00:31:30,750 Vraiment sympa pour un certain nombre de choses. 518 00:31:30,750 --> 00:31:35,940 >> Je pense que c'est à peu près tout ce que je dirai en général. 519 00:31:35,940 --> 00:31:39,040 Une dernière chose que je vais mentionner sur les API en général est que 520 00:31:39,040 --> 00:31:41,840 vous aurez parfois tomber sur quelque chose appelé la limitation du débit, 521 00:31:41,840 --> 00:31:44,940 et l'idée de la limitation du débit, c'est que vous ne voulez pas abuser API. 522 00:31:44,940 --> 00:31:48,130 En d'autres termes, c'est vraiment sympa que beaucoup de ces sites ont des APIs 523 00:31:48,130 --> 00:31:51,070 que vous pouvez aller et utiliser gratuitement. 524 00:31:51,070 --> 00:31:54,460 Cependant, si vous faites des millions ou des milliards de requêtes par jour, 525 00:31:54,460 --> 00:31:57,610 Par exemple, si vous êtes coincé dans une boucle infinie qui est infiniment interrogation 526 00:31:57,610 --> 00:32:00,680 une sorte d'API et de récupérer une énorme quantité de données, 527 00:32:00,680 --> 00:32:04,570 évidemment, ce n'est pas bon, alors ce que beaucoup d'API faire, c'est avoir cette limitation du débit caractéristique 528 00:32:04,570 --> 00:32:09,970 qui dit que vous ne pouvez effectuer 1.000 demandes par jour et par adresse IP ou quelque chose comme ça. 529 00:32:09,970 --> 00:32:12,540 Et si vous faites beaucoup de tests et ce genre de chose, 530 00:32:12,540 --> 00:32:14,890 vous aurez parfois de fonctionner dans les détails, et tout à coup il vous coupez 531 00:32:14,890 --> 00:32:18,280 et dire non, je ne vous donne pas davantage de données. 532 00:32:18,280 --> 00:32:20,000 >> Ce que vous voulez faire est de jouer selon les règles. 533 00:32:20,000 --> 00:32:22,950 Vous voulez vous assurer que vous avez lu la spécification API attentivement. 534 00:32:22,950 --> 00:32:26,330 Si elle a certaines règles qui lui sont attachés, comme vous ne pouvez effectuer des requêtes par jour X 535 00:32:26,330 --> 00:32:30,000 ou vous ne pouvez accéder à une partie de la base de données d'un certain nombre de fois 536 00:32:30,000 --> 00:32:32,900 ou quelque chose comme ça, vous voulez vous assurer que vous vous en tenez à cela. 537 00:32:32,900 --> 00:32:38,360 Tant que vous jouez au sein de ces règles, vous aurez probablement un très bon moment à l'aide des API. 538 00:32:38,360 --> 00:32:42,030 Votre emporter global est APIs sont vraiment, vraiment utile. 539 00:32:42,030 --> 00:32:45,610 >> Il ya une API pour presque n'importe quel service Web est vaste. 540 00:32:45,610 --> 00:32:50,700 À peu près n'importe quelle partie de la suite Google Outils, Google Maps, Google Earth, 541 00:32:50,700 --> 00:32:54,390 GMail, Google Calendar, toutes ces choses ont des APIs. 542 00:32:54,390 --> 00:32:58,280 Vous pouvez les utiliser à la fois des données get partir du serveur et envoyer des données au serveur. 543 00:32:58,280 --> 00:33:00,870 En d'autres termes, si vous voulez faire une application de calendrier qui peut mettre à jour 544 00:33:00,870 --> 00:33:04,190 Calendrier quelqu'un Google, il ya une API pour cela. 545 00:33:04,190 --> 00:33:07,810 Si vous voulez faire quelque chose qui va vous dire où 546 00:33:07,810 --> 00:33:12,530 l'emplacement d'une adresse de certain, c'est que vous pouvez utiliser l'API Google Maps pour cela. 547 00:33:12,530 --> 00:33:15,860 API sont incroyablement utiles, et ils sont partout. 548 00:33:15,860 --> 00:33:18,700 Si vous êtes intéressé par une sorte d'idée, 549 00:33:18,700 --> 00:33:22,170 il ya probablement une API connexes que vous pouvez utiliser pour obtenir un grand nombre de données 550 00:33:22,170 --> 00:33:25,060 très rapidement et très simplement. 551 00:33:25,060 --> 00:33:28,140 >> Si vous êtes encore à la recherche d'un projet ou si vous voulez juste jouer 552 00:33:28,140 --> 00:33:31,820 avec quelque chose en général, les API sont certainement vaut la peine. 553 00:33:31,820 --> 00:33:37,200 Merci, et je suis heureux de répondre à toutes les questions que vous les gars peuvent avoir. 554 00:33:37,200 --> 00:33:44,900 Ok, merci beaucoup. 555 00:33:44,900 --> 00:33:48,000 [CS50.TV]