[Powered by Google Translate] [Séminaire] [Un programmeur Introduction à l'API] [Billy Janitsch] [Université de Harvard] [Tommy MacWilliam] [C'est CS50.] [CS50.TV] Salut tout le monde, je suis Billy, et aujourd'hui, je vais parler de API, ou des interfaces de programmation d'applications, spécifiquement dans le cadre de projets de fin d'CS50 et ce genre de chose. En général, ce qui est une API? En termes très généraux, c'est en quelque sorte un intermédiaire qui permet à 2 pièces des logiciels de communiquer les uns avec les autres. C'est une sorte de définition très large et n'est pas pertinent pour ce que nous étudions. Ce que nous voulons vraiment, c'est une sorte de terrain d'entente utiles pour communiquer avec une sorte de base de données quelque part. Voici un tableau et, fondamentalement, l'idée est que nous sommes une application, et nous voulons obtenir des données d'une base de données, mais nous ne voulons pas d'interroger la base de données directement. Au lieu de cela, nous voulons passer par ce genre d'homme du milieu, de l'API. L'idée derrière cela est numéros 2 et 3 sur le graphique sont tous les deux va être très compliqué et salissant. En d'autres termes, lorsque l'API est l'interrogation de la base de données, il va probablement être en utilisant des tables SQL et tous ce genre de choses, et nous avons appris un peu plus à ce sujet dans CS50, mais dans l'ensemble, vous avez remarqué que c'est un peu la douleur. Il devient très, très compliqué et salissant, surtout quand vous faites des requêtes complexes et ce genre de chose. Ce que nous voulons vraiment, c'est une sorte de façon simple et utile pour obtenir ces données, et que l'idée derrière les numéros 1 et 4 sur le diagramme. En d'autres termes, nous voulons un moyen très simple de dire ce que l'API pour obtenir pour nous et un moyen très simple d'obtenir ces données en arrière. Il ya un moyen principal que les données sont généralement envoyés et reçus, qui est JSON ou JavaScript Object Notation. Cela peut varier un peu en ce qui concerne la façon dont vous envoyer la requête à l'API. En d'autres termes, si vous voulez un certain nombre de données, comment vous dire l'API pour obtenir ces données peut varier un peu. Habituellement, il consiste à faire une sorte de requête réseau. En d'autres termes, l'accès à une sorte d'URL qui va raconter l'API exactement ce que vous voulez, mais les données sont presque toujours renvoyé, en d'autres termes, numéro 4 en JSON. Qu'est-ce que JSON exactement? Comme je l'ai dit, JavaScript Object Notation. Il s'agit essentiellement de la norme universelle pour la transmission et la réception de données. L'idée est que vous avez ces 3 catégories de choses. Vous avez des tableaux, HashMap, et les primitives. Les tableaux et les HashMaps vous avez regardé un peu en CS50, mais vous avez en quelque sorte obtenu un sens très strict de ce qu'ils sont. En d'autres termes, avec des tableaux que vous savez qu'ils sont de type lié, de sorte que vous n'avez qu'une seule sorte de type qui va tout au long de l'ensemble du réseau. JSON est beaucoup plus indulgent avec ce genre de chose. Fondamentalement, l'idée est de construire cet objet, qui peut être composé de n'importe lequel de ces 3 choses et peut être composé de plusieurs caractères d'entre eux, et ils peuvent être imbriqués. Voici en quelque sorte d'un exemple de JSON, qui sont ces accolades ici représentent votre table de hachage, et une table de hachage est essentiellement une cartographie d'une sorte de clé à une sorte de valeur. Vous verrez ici que nous avons la clé propriétés, et c'est la cartographie dans un tableau, ce qui est tout cela. Nous voyons un autre élément de la table de hachage, ce qui est isAwesome clé, qui fait correspondre à une valeur primitive de vrai, en d'autres termes, un booléen. Primitives peuvent être des chaînes. Ils peuvent être des nombres entiers. Ils peuvent être bools, quelque chose comme ça. Et vous voyez le contenu de ce tableau que les points de propriétés a 2 cordes en elle, auto-similaire et merveilleux. Ce sont 2 propriétés de JSON, et nous voyons que JSON est génial. Pour examiner cette question un peu plus près, je vais construire Un exemple plus complexe de JSON ici. Commençons par un tableau, par exemple, juste un tableau vide. Mais c'est un peu ennuyeux, alors nous allons le remplir un peu, et comme je l'ai dit, les tableaux dans JSON sont de type lié, afin que nous puissions aussi avoir une chaîne ici, ce qui est salut, et c'est un autre élément de ce tableau. Et de même, on pourrait ajouter un hashmapping ici, ce qui va avoir un peu de correspondances. Il va avoir une correspondance entre le nom de la chaîne de Billy. Nous avons une cartographie du nom de Billy, et nous avons une cartographie des couleur préférée au bleu. C'est fondamentalement un bon exemple de JSON. Il sorte de monte dans les cris, il ya besoin d'une virgule, toutes les différentes parties de celui-ci. Encore une fois, ce n'est pas du tout lié taper, vous pouvez donc avoir toute sorte de types l'intérieur de ce que vous voulez, et l'idée est qu'il est auto-similaire. En d'autres termes, ce droit ici est un objet JSON, que toute cette chose est, comme il est juste cela, vous pouvez donc avoir une primitive être un objet, un tableau comme un objet ou une table de hachage est un objet. Comme vous pouvez sorte de voir, JSON est vraiment, vraiment utile, car il est tellement polyvalent. Vous pouvez avoir toutes les données possibles que vous pouvez concevoir stockées au format JSON. C'est en fait un langage vraiment agréable à utiliser avec les API parce que c'est à peu près dire que peu importe ce que les données que vous souhaitez il va y avoir un moyen de le récupérer au format JSON. Quelques propriétés qui font de JSON particulièrement bon pour ce genre de chose. Comme vous pouvez le voir, par rapport à beaucoup de choses que vous avez travaillé avec de CS50 il est relativement très facile à lire et très facile à écrire. Vous pouvez le tiret si vous voulez, comme je faisais dans cet exemple, ce qui vous donne une belle version assez que vous pouvez voir très bien. Mais par ailleurs, il est également facile à lire et à écrire pour un ordinateur. En d'autres termes, il est facile à analyser et facile à coder, ce qui signifie qu'il est assez rapide dans la mesure où la lecture des données est concernée, et JSON peut être généré très rapidement. Il est également très facile d'accéder à différentes parties du JSON et ce genre de chose. C'est gentil, et, en outre, le fait que c'est auto-similaire, en d'autres termes, le fait que vous pouvez avoir JSON JSON au sein au sein de JSON C'est vraiment sympa pour stocker des données. Une autre partie qui est généralement très utile de travailler avec les API est jQuery. Vous avez appris un peu de JavaScript, qui est une belle façon de pour manipuler du code HTML et CSS dans un site Web. Mais il peut être genre d'une douleur au code JavaScript dans la plaine, en grande partie parce que JavaScript est un langage très verbeux. Vous avez beaucoup à apprendre de la syntaxe, et juste pour faire des choses très simples il faut beaucoup de code, donc jQuery est une bibliothèque JavaScript pour. En d'autres termes, il s'agit d'un fichier JavaScript que vous pouvez charger puis utiliser les fonctions de jQuery pour faire certaines choses. Et jQuery rend fondamentalement votre vie beaucoup plus facile. Il simplifie ce qui prendrait des centaines de lignes de JavaScript vers le bas pour quelques lignes dans jQuery. C'est particulièrement utile si vous utilisez des API car généralement comment vous allez accéder à des API est en faisant des requêtes AJAX, et je crois que David l'a mentionné dans la conférence que les requêtes AJAX sont en général lorsque vous faites une demande de réseau à une sorte de serveur et de reprendre une certaine sorte de données et mise à jour d'une page instantanément. Alors que dans d'activer JavaScript clair que prendrait le nombre de lignes folles de valider tous les en-têtes et faire tout ce genre de choses, jQuery possède une fonction très simple, appelée AJAX, et tout ce que vous avez à faire, c'est de donner AJAX les paramètres que vous souhaitez donner à l'API, l'emplacement de l'API et de toute forme supplémentaire d'options que vous souhaitez configurer. C'est vraiment, vraiment sympa et très utile pour ce genre de chose. C'est tout ce que nous devons commencer à obtenir nos mains sales dans les API. Je vais évoquer quelques exemples et d'explorer leurs différentes propriétés et pourquoi ils sont utiles pour différents types de choses. La première chose que je vais effectivement vous montrer quelque chose que je travaille sur à mon laboratoire de recherche, qui est une visionneuse Ngram, et au fond l'idée d'une visionneuse Ngram est que vous pouvez lancer une recherche sur une sorte de mot ou une phrase et voir combien de fois il est apparu dans un certain ensemble de textes au fil du temps. Cet exemple ici, c'est cet ensemble de données de bébés qui sont nés à New York entre 1920 et 2000. On peut chercher, par exemple, pour le nom de Jennifer, et nous voyons que les pré-années 1960, il n'était pas vraiment utilisé tant que ça, puis à mesure que nous en ans plus tard il devient de plus en plus utilisé. Nous pouvons aussi faire des comparaisons, si l'on compare à Jennifer, par exemple, Thomas, nous pouvons voir Thomas a été assez répandue à travers l'histoire, tandis que Jennifer est un nom plus récent. Nous pouvons faire ce genre de chose. Comment cela fonctionne-t application? Fondamentalement, il fonctionne via une API. En d'autres termes, nous avons ici certains paramètres. Nous avons les paramètres de ce que nous sommes en train de chercher, qui sont ces noms, et puis nous avons quelques propriétés d'autres, comme l'axe des Y et l'axe X. Vous pouvez voir que nous avons quelques options différentes dans la mesure où la résolution temporelle à utiliser et ce genre de chose. Nous avons ces options dans la mesure où les données que nous voulons réellement à partir de la base de données, et nous voulons obtenir que les données de retour d'une certaine façon utile. Normalement, si nous interroger directement la base de données il serait trier du être une douleur à faire parce que vraisemblablement ces données sur les noms de bébé vit dans une base de données quelque part, et il serait très compliqué d'avoir à l'interroger manuellement et de décider exactement quelles sont les données à retourner. En d'autres termes, nous ne se soucient que Jennifer et Thomas, dans ce cas, et nous ne se soucient que sur un certain axe et tout ce genre de choses. Comment peut-on contourner ce problème? Pour creuser dans cette API un peu plus, je vais vous montrer un autre exemple de cette plate-forme qui utilise un ensemble de données légèrement différente. Cet ensemble de données, au lieu d'être des noms de bébé, est en fait l'ensemble de la imprimer la publication de base de données Open Library, qui est une source immense de textes publiés au cours des quelque 100 dernières années. L'idée est que nous avons cette compository des millions et des millions de texte, que nous pouvons maintenant rechercher des mots et expressions différentes po Voici un exemple qui varie un peu différemment de l'exemple précédent Je vous ai montré, qui est que nous avons ces 3 requêtes de recherche, la guerre, la guerre et le mot français pour la guerre, qui est guerre. Et nous recherchons dans les 3 différentes sections de la base de données totale. En d'autres termes, dans cette première requête, nous ne faisons que chercher aux Etats-Unis, dans le second que dans le Royaume-Uni, et le troisième seulement à partir ouvrages publiés en France. Nous voyons des tendances intéressantes se dégagent. Par exemple, on voit bien ici que- oups, j'ai foiré l'axe un peu, mais vous pouvez voir à droite de cette gamme ici autour de la guerre civile il ya un grand pic dans l'édition américaine mais pas un grand pic dans les deux autres, et c'est évidemment parce la guerre de Sécession qui se passait à ce moment-là. Nous pouvons voir des trucs cool là-bas, mais ce que nous nous soucions vraiment est de savoir comment nous avons obtenu ces données. Je vais vous emmener dans les coulisses de cette application en un peu. Une astuce est de savoir si vous travaillez avec le site et le type de veux savoir ce qui se passe dans les coulisses, vous pouvez ouvrir les outils de développement. Je vais être en utilisant les outils de développement de Chrome, et d'apprendre à ceux qui vous pouvez faire le contrôle, décalage, J, et qui vous emmène à la console JavaScript. Il ya quelques onglets ici. Ils peuvent tous être très utile dans des circonstances différentes, mais je me soucie le réseau onglet en ce moment, et j'ai vraiment besoin d'actualiser pour obtenir ce travail. Oh, désolé. Il aime donner un exemple au hasard. Bon, nous allons utiliser cet exemple au lieu-là. L'idée est qu'il ya cette API ici, et vous pouvez voir exactement ce que l'API est de retour. Ceci est ce que l'application est un retour de l'API avoir envoyé cette demande. Permettez-moi de zoomer un peu, et l'on peut voir en gros c'est juste une série de paires clé-valeur au format JSON. En d'autres termes, nous avons cette table de hachage qui est ici mappage des valeurs. En d'autres termes, c'est la cartographie années à des valeurs. En 1765, nous avons d'abord quel que soit le mot recherché est utilisée 90 fois sur 1 million, donc nous revenons à ce résultat. Ce n'est pas exactement JSON puisque nous avons cette tête fait peu ici, mais remarquez que cet objet tout ici est juste un gros blob JSON. Nous avons ici un tableau qui contient cet élément de l'ensemble, et vous pouvez voir que tout élément se termine là, et puis nous avons un autre élément important qui va tout le chemin jusqu'à la fin, et qui se termine ici. Nous avons une gamme très grand avec 2 objets qu'elle contient, et chacun de ces objets est une table de hachage. Vous pouvez voir à l'intérieur de chacun de ces HashMaps nous avons une correspondance de cette valeur de l'indice à 0 et la valeur de cette valeur à une autre table de hachage, qui est encore une fois la cartographie valeurs de l'axe X à valeurs de l'axe Y. Vous pouvez voir JSON devient un peu compliqué, mais dans l'ensemble, c'est en fait très utile, et il est très facile d'accès par rapport à d'autres formes de notation. Quant à ce que nous sommes en train d'envoyer des données à l'API pour obtenir, Je vais aller dans le back-end un peu ici. C'est le gros fichier JavaScript qui est la manipulation de toutes les interactions de l'application web, et nous ne se soucient pas plus de cela, mais nous nous soucions de certaines d'entre elles. Par exemple, nous nous soucions de cette fonction BuildQuery, et l'idée de cette fonction est fondamentalement il regarde autour de la page, comprendre ce que l'utilisateur veut interroger, en d'autres termes, contrôle de ces boîtes où ils ont leurs entrées termes de recherche, vérifier les différentes valeurs de l'axe Y et X qu'ils ont choisis et tout ce genre de chose, et il va cracher cette valeur requête, que je peux ensuite envoyer à l'API. Cela semble compliqué, et il est assez compliqué mais ce que je vais faire, en fait, je fais déjà ce qui est génial, c'est que je vais avoir la console d'imprimer exactement ce que la valeur requête qu'il est hors envoyer à l'API. En fait, c'est juste ici. Désolé, il émet beaucoup de choses. Mais c'est ce qui nous intéresse, cet objet ici. C'est l'objet de la requête. En d'autres termes, c'est exactement ce que l'application web envoie à l'API, et nous allons donc regarder à l'intérieur un peu, et nous voyons que nous avons quelques valeurs ici. Nous voyons que nous avons ce type de comptage, qui est occurrences par million de mots, ce qui est exactement ce que nous avons choisie dans l'axe Y ici. C'est là que vient. Nous avons une base de données de valeur, ce qui signifie qu'il ya une certaine base de données que ces données sont en vie, et nous voulons accéder à ces données spécifiquement par opposition aux données des noms de bébé, par exemple. Ensuite, nous avons des groupes de cette valeur, ce qui veut dire que nous voulons faire une recherche par an, contre une valeur X autre axe. Ensuite, nous avons une méthode, que certains API va faire des choses multiples. En d'autres termes, cette API peut également renvoyer d'autres types de données, mais dans ce cas, nous voulons que la cartographie des valeurs de l'axe X à valeurs de l'axe Y. C'est ce qui est dit de faire ça là-bas, et nous avons ce tableau de recherche des limites, qui contient 2 valeurs. Le premier est ce que nous voyons ici, ce qui est l'ensemble des valeurs contenu à l'intérieur de cette boîte première petite au sommet. En d'autres termes, nous voulons chercher le mot bataille, et nous voulons filtrer par les textes en anglais au sein de la littérature américaine. Nous avons ce pays, qui est Etats-Unis. Nous avons une langue, soit l'anglais, nous avons donc toutes ces différentes parties qui sont tous raconter l'API exactement ce que nous voulons. Nous ne savons pas quelles sont les données que nous obtenons est encore, mais nous savons que les données va prendre une certaine forme. Cet exemple est une sorte de sur le côté compliqué, et vous ne serait pas nécessairement en utilisant l'API de ce complexe, mais c'est pour vous montrer la portée et la puissance de ce que peuvent faire les API. En d'autres termes, en utilisant un système relativement simple requête nous avons essentiellement une zone de saisie avec un sélecteurs de quelques autres dans des lieux différents. Permettez-moi de faire un zoom avant ici. Nous avons une zone de saisie avec quelques sélections de métadonnées différents, et nous avons l'axe Y et l'axe X sélections. Nous n'avons pas vraiment que beaucoup de domaines, et nous pouvons voir très facilement que nous sommes en mesure d'interroger une sorte d'API et récupérer des données, puis le mettre dans ce tableau, qui va ensuite l'afficher de manière utile. Pour un autre exemple qui pourrait être un peu plus familier pour vous les gars nous allons tourner vers Facebook. API de Facebook est appelé le graphe Facebook, et au fond ce que cela signifie que Facebook se voit comme cette gigantesque base de données des lots de pièces différentes qui ont toutes certaines relations les uns aux autres. En d'autres termes, je suis un utilisateur de Facebook, j'ai donc un profil et j'ai aussi quelques amis, et chacun d'eux a un profil, et chacun de mes amis a un mur, qui a différents commentaires à ce sujet, et chacun de ces commentaires a goûts et tous ce genre de chose. Il ya beaucoup de différentes parties à Facebook. Il s'agit d'une API très complexe, et il ya des tonnes que vous pouvez faire avec lui, mais c'est en fait assez simple à utiliser. Je vais commencer par aller à graph.facebook.com / billyjanitsch, qui est mon nom de compte unique, et votre nom de compte sera soit une sorte de mot si vous l'avez choisi, ou il pourrait s'agir d'une chaîne de nombres. Ce que nous obtenons est assez basique informations. Nous voyons que j'ai un prénom, ce qui est Billy, un nom de famille, qui est Janitsch. Il s'agit d'un identifiant unique Facebook que j'ai. Vous pouvez voir que je suis homme et que j'ai mon réglage de la langue à l'anglais britannique. En d'autres termes, nous voyons des informations de base ici. Ce n'est pas trop, mais cela nous donne une idée de ce qui est là. Nous pouvons faire la même chose à David Malan, par exemple. Je crois que son nom est dmalan. Nous voyons David Malan a un ID unique. Il a un nom, le prénom, deuxième prénom, nom de famille. Nous voyons aussi qu'il est mâle et a sa langue réglée sur l'anglais américain. En d'autres termes, nous voyons des informations assez basique ici. Maintenant, qu'est-ce qui se passe si nous essayons de vérifier quelque chose d'autre? Disons que je suis intéressé par ce que David Malan a aimé sur Facebook. Je peux faire / aime. Maintenant, nous avons rencontré un problème. Nous avons une sorte d'erreur qui dit un jeton d'accès est nécessaire pour demander cette ressource. Mais si on y pense, ce que fait réellement sens, car ce serait bizarre si vous pouviez accéder à chaque partie de la base de données de Facebook simplement d'une sorte d'API simple, non? En d'autres termes, sans doute votre information ne peut pas être consulté par toute personne qui le veut. Cette erreur est précisément ce que cela signifie. Certaines API besoin de certaines autorisations pour accéder à leurs données. Et API encore plus avancé, comme le Facebook un, il faudra certaines autorisations de faire certaines choses. Je peux voir cette information de base à propos de David Malan. Je peux voir qu'il est homme et qu'il vit aux États-Unis, mais je ne peux vraiment rien passé. Pour contourner ce problème pour l'instant, Facebook a ce bel outil qui est le graphe API explorateur, et l'idée de ce que c'est que vous pouvez trier des faire des autorisations pour vous en fonction de votre propre compte et puis voir des choses qui précisément votre compte peuvent voir. Par exemple, si je fais graph.facebook.com/billyjanitsch/likes- oups, je suppose que je dois revalider mon jeton ici. D'accord. Si je fais ça, génial, maintenant je vois que je reçois cet objet en arrière qui dit que j'aime les nouilles de piscine, qui se trouvent dans la catégorie Jeux et Jouets. J'aime les morses, qui sont dans la catégorie des animaux. Ce sont mes goûts réels Facebook. Ils sont un peu embarrassant. Mais nous pouvons voir ces données sont tous retournés en JSON. Il est assez lisible. En d'autres termes, nous avons cette cartographie des données à une sorte de tableau, et chaque élément de cette matrice est une table de hachage qui associe le nom d'un analogue, et la catégorie d'un analogue. Chaque analogue a une ID unique. Il ya toutes sortes de choses différentes des données que nous pouvons obtenir, et si vous êtes intéressé à utiliser l'API de Facebook pour un projet CS50 finale ou quelque chose comme ça c'est en fait tout à fait faisable. Fondamentalement la façon de contourner la chose authentification Facebook est utilise un système appelé OAuth, ou l'authentification Open, et je ne veux pas en parler maintenant parce que OAuth ou l'autre type d'authentification a tendance à varier beaucoup entre les différentes API, pour que je puisse passer beaucoup de temps va sur chacun d'eux, mais ils sont en fait assez explicite. Si vous Google Facebook API, il est très lisible. Il ya un spec ensemble. Par exemple, il s'agit de la documentation de l'API Facebook, 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 qui sont disponibles pour obtenir des données pour autant que ainsi que les différentes autorisations dont j'ai besoin pour y accéder. Comme nous l'avons vu, nous n'avons pas besoin d'autorisations pour accéder au nom ou selon le sexe, mais au-delà que nous avons besoin d'autorisations pour la plupart des choses. Cette page, ou plutôt, ce site vous dira également comment obtenir un jeton pour être en mesure de vous authentifier. La plupart des systèmes d'authentification utiliser une sorte de jeton où vous obtenez cette valeur unique, qui est une chaîne très longue et aléatoire, et de cette façon ils peuvent associer la demande que vous faites avec vous. En d'autres termes, ils savent que vous ne faites pas quelque chose de suspect avec leurs données. Ils savent exactement ce que vous obtenez. Ils savent aussi que vous avez l'autorisation d'afficher cette information. Si vous avez fait une application Facebook et votre application a certains utilisateurs, et les utilisateurs ont permis à cette application d'accéder à certaines parties de leur profil, alors tout ce que touche l'API ou d'un jeton que cette application utilise sera en mesure d'accéder aux données pour les utilisateurs. Cela peut paraître compliqué, mais il n'est pas trop mal, et si vous voulez utiliser Facebook Je recommande fortement que vous envisager de jouer avec leur API. C'est très cool, et vous pouvez faire beaucoup de choses différentes avec elle. Si l'utilisateur vous accorde ces autorisations, vous pouvez même revenir à l'API et dire que je veux réellement poster sur le mur de cet utilisateur, ou je veux avoir les poster une photo, et c'est pourquoi sur votre fil de nouvelles que vous obtenez parfois ces choses ennuyeuses disant que votre ami a regardé cette video sur une sorte de site de bizarre ou quelque chose comme ça. C'est parce que cette application a pu avoir accès à poster sur le mur de cette personne. L'idée générale, l'API de Facebook est assez compliqué, mais aussi très utile. Certainement intéressant vérifier si vous êtes encore à la recherche d'un projet final. Un autre ensemble d'API que je vais aller plus est CS50 API. Permettez-moi de faire un zoom avant ici. CS50 a effectivement mis en place toute une série d'API que vous pouvez utiliser pour un projet final ou tout simplement pour tout ce que vous faites. Et ils sont la plupart du temps liée à Harvard, et ils varient dans le menu HUDS, par exemple, à cette API Harvard événements, ce qui vous permettra de consulter la liste des différents événements qui se déroulent à l'Université Harvard et ce genre de chose. Et si on peut cliquer sur l'un quelconque d'entre eux et obtenir une spécification pour elle, que vous serez en mesure de trouver pour toute API, et l'idée est il vous permet de savoir, A, ce qu'il doit demander de l'API et comment en faire la demande. En d'autres termes, si je veux tous les événements qui se passent demain alors je dois bien évidemment lui donner cette date que je veux dans un certain format, et B, il va me dire exactement ce que ça va donner en retour pour moi. Il va dire que je vais vous renvoyer cet objet JSON, ou comme vous pouvez le voir, il existe des formats différents. Vous pouvez également retourner les données au format CSV, par exemple. Mais vous savez exactement comment ces données va regarder quand vous le récupérer de sorte que vous pouvez vous attendre à faire certaines choses avec elle. On peut faire défiler vers le bas et voir, par exemple, si nous voulons interroger l'API pour obtenir un calendrier, alors nous pouvons utiliser cette URL particulière et lui donner certains paramètres qui vont être les données que nous voulons exactement. Et de même, si nous voulons que les données en arrière dans un certain format, alors nous pouvons lui demander de transmettre les données dans un fichier CSV, et c'est juste un autre paramètre que nous passons à l'API. Beaucoup de choses cool à faire là-bas. Je recommande vivement de vérifier les API CS50. Je vais regarder cette API alimentaire Harvard en particulier pour un peu. Une chose que j'ai fait conçu ce site est Harvard Noms, qui utilise l'API alimentaire CS50 à récupérer le menu HUDS pour le jour. Et pour les gens des écoles de vulgarisation, HUDS est le service de restauration à Harvard. Qu'est-ce que vous obtenez est cette page qui contient tous les repas de la journée, et nous voyons le déjeuner. Nous avons quelques catégories différentes. Nous avons la fève et de la station de grains entiers. Nous avons le poste de riz brun. On peut voir pour le brunch, nous avons ces quelques aliments. Si on clique sur eux, alors nous obtenons l'information nutritionnelle. Vous voyez, c'est l'information nutritionnelle pour le pamplemousse, au cas où vous vous poseriez. Et de nouveau, nous allons scruter l'extrémité arrière un peu ici et de voir exactement ce que ce soit fait pour obtenir ces données. Et il se révèle ne pas être effectivement très complexe du tout. Ce fichier ressemble un peu désordonné, mais gardez à l'esprit que ce n'est manipulation de l'ensemble du site, et si je défiler vers le bas, nous voyons cette fonction de changement de données. Maintenant, juste pour être clair, ce qui est écrit dans CoffeeScript, qui est une langue que vous n'avez probablement pas vu avant. Mais il est assez lisible, donc je vais marcher à travers elle comme si elle était pseudocode. Changer la date est une fonction qui va prendre dans cette valeur de date, et il va aussi à prendre dans un premier, que nous ne se soucient pas autant. Mais la chose importante est qu'il a cette date, et cette date est le jour que nous voulons demander tous les produits alimentaires pour. Et puis, vous voyez, nous avons un peu de syntaxe ici, qui est essentiellement l'analyse de cette date dans un format lisible. En d'autres termes, l'API nécessite la date dans un certain format. Vous ne pouvez pas dire Novembre 16th, 2012 AD. Il ne saura pas quoi faire avec ça. Il veut la date dans un format spécifique. Tout ce que nous faisons ici, c'est lui donner exactement ce format, qui est une valeur d'année et un trait d'union, une valeur de mois, un autre trait d'union et la valeur de date. Et nous disons aussi que nous voulons que les données soient sortie au format JSON. Maintenant, nous faisons cette requête AJAX, et comme je l'ai mentionné plus tôt, jQuery a cette super fonction utile AJAX qui tout ce que vous devez faire est de spécifier quelques paramètres ici-bas, et il vous rendra exactement ce que vous voulez. Nous lui disant que l'URL que nous voulons qu'il aille à cette API est CS50 alimentaire, que nous avons obtenu à partir de la spécification. Nous disons que nous voulons que les données en JSON et que nous allons lui donner ces données que nous avons définies ici. C'est le jour où nous voulons que les produits alimentaires pour. Et puis tout ce que nous avons à faire est de définir une sorte de fonction de réussite, qui est essentiellement ce qui se passe lorsque l'API renvoie ces données. En d'autres termes, nous avons empaqueté tous les paramètres que nous voulons, qui dans ce cas est le jour où nous le voulons et le fait que nous le voulons en JSON, et nous l'envoyer à l'API, donc maintenant l'API est dit, d'accord, est ici vos données, je l'ai récupéré pour vous. Nous avons la fonction de réussite, ce qui signifie, étant donné que l'API retourne avec succès certaines données, que faisons-nous avec lui? Et il se trouve que tout ce que nous faire est d'appeler cette fonction de menu mise à jour avec tout ce que l'API est de retour, afin que nous puissions rechercher ce et de voir que tout ce que nous faisons, c'est en utilisant un tas de nouvelle syntaxe ici de mettre à jour le code HTML et d'insérer ces nouvelles données. Ce que cela permet, c'est que nous avons ces flèches de chaque côté, et on peut cliquer, et maintenant nous nous penchons sur les données pour le lendemain, et encore pour le lendemain, et chaque fois qu'il est mise à jour que valeur de date et d'interrogation de l'API, reprendre certaines données et de le mettre sur le site. Encore une fois, vous pouvez le voir, super, super utile. Cette application m'a fallu quelques heures pour pirater ensemble, et j'ai une expérience un peu plus, évidemment, mais votre CS50 projet final peut ressembler à quelque chose comme ceci beaucoup. API sont super puissant pour le montant de l'effort qu'ils prennent. La dernière chose que je vais passer en revue quelques-uns est une API plus large. Je ne vais pas aussi loin dans leur autant que ce qu'ils font précisément, mais je vais vous donner une idée de ce qui existe. 2 plus vraiment utile, si vous êtes intéressé par l'analyse des données ou de visualisation ou quelque chose comme ça, et sont Freebase Wikipedia. Wikipedia-je suppose que vous le savez tous, est une encyclopédie libre en ligne, et il a fait une API, donc si vous voulez, par exemple, obtenir tous les textes et les articles pour le poulpe vous pouvez très facilement faire cela. Il suffit de dire hey, Wikipedia API, j'aimerais les données renvoyées celui-ci, et je le voudrais dans ce format, et l'article que j'aimerais, c'est le poulpe, et très vite, il vous rendra cette information. Cela peut être très utile si vous voulez faire une sorte de site que c'est une meilleure visualisation pour Wikipedia ou quelque chose comme ça. Freebase est une sorte de semblable, même si c'est un peu plus difficile dans la mesure où l'API. Freebase est comme Wikipedia en ce qu'elle est une encyclopédie en ligne qui contient beaucoup, beaucoup de données différentes sur toutes sortes de sujets différents, mais il est stocké dans une base de données relationnelle, ce qui est légèrement différente de Wikipedia. Wikipedia a ses articles et objets liés à d'autres articles, mais la plupart du temps, si vous voulez que les données pour le poulpe, vous allez à l'article poulpe, obtenir ces données, et que vous avez un tas de texte sur les poulpes, c'est très bien. Freebase fonctionne d'une manière un peu plus compliqué que dans tout est lié à une autre. En d'autres termes, si nous recherchons pour le poulpe alors il a un tas de catégories qui lui sont associés. Par exemple, c'est un animal, il vit sous l'eau, il a une certaine température du corps. Je ne sais pas. Et toutes ces catégories sont des liens vers d'autres endroits où vous pouvez aller de voir les choses avec cette même catégorie. En d'autres termes, l'ensemble des données poulpe qui contiennent un lien vers le jeu de données pour tous les animaux, et qui me permettrait de se déplacer dans la base de données très rapidement. Cela peut être très utile si vous faites quelque chose comme des comparaisons. En d'autres termes, étant donné une certaine chose, vous voulez voir qu'est-ce que c'est lié à et voir ce que cela n'est pas lié à. Ce genre de chose. Il peut être utile dans un certain nombre de façons. Si vous cherchez plus d'un défi et d'être capable de faire des choses plus complexes Je voudrais envisager de prendre un coup d'oeil à l'API Freebase. Mais surtout, Wikipedia est un endroit très simple d'aller aussi loin que d'obtenir de l'information. Un autre endroit que je vais regarder, c'est Last.fm, et je vais en fait aller sur le site dans le cas où certaines personnes ne sont pas familiers, mais Last.fm est essentiellement une musique les goûts et les sites Web des recommandations. Vous pouvez créer un compte. Vous pouvez commencer téléchargement de musique à partir de votre lecteur de musique sur le site et, fondamentalement, il va commencer à vous donner des recommandations musicales basée sur ce que vous écoutez. Par exemple, si vous allez à votre page profil de ceci est le mien- vous pouvez voir que vous avez une liste de pistes récemment écouté. Vous pouvez voir l'ensemble artistes préférés, tous ce genre de chose, et encore une fois, il ya une API gros derrière Last.fm,  et vous pouvez l'utiliser pour faire des tas de choses vraiment cool. Par exemple, je vais aller à la page d'un ami qui a ce site Last.fm outils. Il s'agit en fait d'une autre plate-forme qui est construit sur l'API de Last.fm, et il fait un certain nombre de jolies choses intéressantes. Si je me connecte avec mon nom d'utilisateur, par exemple, Je peux lui demander de générer un nuage de tags, par exemple, et ce que cela va faire, c'est de me redonner une image de tous les genres et ce genre de chose que j'aime écouter. Comment se fait-il cela? Très fondamentalement, il est dit à l'API Last.fm voici cet utilisateur. Je voudrais savoir le genre de chaque chanson qu'ils ont jamais écouté, et vous pouvez le faire en faisant un appel assez simple AJAX pour l'API Last.fm. Vous obtiendrez de retour d'une grande liste, et il est évident que d'autres choses qui se fait pour le transformer en un nuage de mots, mais vous pouvez voir l'ensemble il est très facile d'accès et très facile à utiliser. Vraiment sympa pour un certain nombre de choses. Je pense que c'est à peu près tout ce que je dirai en général. Une dernière chose que je vais mentionner sur les API en général est que vous aurez parfois tomber sur quelque chose appelé la limitation du débit, et l'idée de la limitation du débit, c'est que vous ne voulez pas abuser API. En d'autres termes, c'est vraiment sympa que beaucoup de ces sites ont des APIs que vous pouvez aller et utiliser gratuitement. Cependant, si vous faites des millions ou des milliards de requêtes par jour, Par exemple, si vous êtes coincé dans une boucle infinie qui est infiniment interrogation une sorte d'API et de récupérer une énorme quantité de données, évidemment, ce n'est pas bon, alors ce que beaucoup d'API faire, c'est avoir cette limitation du débit caractéristique qui dit que vous ne pouvez effectuer 1.000 demandes par jour et par adresse IP ou quelque chose comme ça. Et si vous faites beaucoup de tests et ce genre de chose, vous aurez parfois de fonctionner dans les détails, et tout à coup il vous coupez et dire non, je ne vous donne pas davantage de données. Ce que vous voulez faire est de jouer selon les règles. Vous voulez vous assurer que vous avez lu la spécification API attentivement. Si elle a certaines règles qui lui sont attachés, comme vous ne pouvez effectuer des requêtes par jour X ou vous ne pouvez accéder à une partie de la base de données d'un certain nombre de fois ou quelque chose comme ça, vous voulez vous assurer que vous vous en tenez à cela. Tant que vous jouez au sein de ces règles, vous aurez probablement un très bon moment à l'aide des API. Votre emporter global est APIs sont vraiment, vraiment utile. Il ya une API pour presque n'importe quel service Web est vaste. À peu près n'importe quelle partie de la suite Google Outils, Google Maps, Google Earth, GMail, Google Calendar, toutes ces choses ont des APIs. Vous pouvez les utiliser à la fois des données get partir du serveur et envoyer des données au serveur. En d'autres termes, si vous voulez faire une application de calendrier qui peut mettre à jour Calendrier quelqu'un Google, il ya une API pour cela. Si vous voulez faire quelque chose qui va vous dire où l'emplacement d'une adresse de certain, c'est que vous pouvez utiliser l'API Google Maps pour cela. API sont incroyablement utiles, et ils sont partout. Si vous êtes intéressé par une sorte d'idée, il ya probablement une API connexes que vous pouvez utiliser pour obtenir un grand nombre de données très rapidement et très simplement. Si vous êtes encore à la recherche d'un projet ou si vous voulez juste jouer avec quelque chose en général, les API sont certainement vaut la peine. Merci, et je suis heureux de répondre à toutes les questions que vous les gars peuvent avoir. Ok, merci beaucoup. [CS50.TV]