[Powered by Google Translate] [セミナー] [APIへのプログラマーズ入門] [ビリーJanitsch] [ハーバード大学] [トミーM​​acWilliam] [これはCS50です。] [CS50.TV] 皆さん、こんにちは、私はビリーだし、今日は、APIについて話をするつもりだ またはアプリケーション·プログラミング·インターフェース、 特にCS50最終的なプロジェクトのコンテキストとそういったことインチ 一般的にはAPIとは何ですか? 非常に広い意味では、それが2個できます真ん中の男のようなものだ 互いに通信するためのソフトウェア。 それは非常に広い定義のようなものだと我々は見ている何のためにそれは関係ありません。 我々が本当に欲しいのは便利な中間点のいくつかの並べ替えです どこかのデータベースのいくつかの並べ替えと通信することができます。 ここでは、チャートだし、基本的な考え方は、 我々は、アプリケーションであり、我々は、データベースからデータを取得したい、 しかし、我々は直接データベースを照会する必要はありません。 代わりに、私たちは真ん中の男のこの種の、APIを介して行きたいと思います。 背後にある考え方は、チャート上の数字2と3である 両方のは非常に複雑で面倒になるだろうしている。 言い換えれば、APIは、データベースを照会しているときに、 それはおそらく、SQLテーブルとスタッフのその種のすべてを使用することになるだろう そして我々は、CS50でも少しですが、全体的なことを学びました あなたはそれが痛みのビットだということに気付きました。 それはあなたが作っている場合は特に、非常に、非常に複雑で乱雑 複雑なクエリとそういったこと。 我々が本当に欲しいのは、便利で簡単な方法のいくつかの並べ替えです そのデータを取得し、それはチャート上の番号1と4の背後にあるアイデアだします。 言い換えれば、私たちは私たちのために何を取得するためのAPIを伝えるために本当に簡単な方法が欲しい 戻され、そのデータを取得するための本当に簡単な方法です。 そのデータは、通常、送信および受信されたことを一つの主な方法は、あります JSON、またはJavaScriptオブジェクト表記はどれですか。 それは、はるかにあなたは、APIへのリクエストを送信する方法などを少し変えることができます。 言い換えれば、あなたはデータの一部が一定の金額をしたい場合は、 どのようにデータが少し異なる場合がありますことを取得するAPIを教えてください。 通常は、ネットワーク要求のいくつかの並べ替えを行うことが含まれます。 言い換えれば、APIを伝えるために起こっているURLのいくつかの並べ替えにアクセス 正確に何をしたいが、データはほぼ必ず返送され、 言い換えれば、JSONで番号4。 JSONは正確には何ですか? 私が言ったように、JavaScriptのオブジェクト表記法。 それは基本的にデータを送受信するための普遍的な標準です。 アイデアは、あなたが物事のこれらの3つのカテゴリを持っているということです。 あなたは、配列、ハッシュマップ、プリミティブを持っています。 あなたはCS50で少し見てきた配列やハッシュマップ、 しかし、あなたは一種の彼らが何であるかの非常に厳密な意味を得ている。 言い換えれば、あなたは彼らがバインド入力していることを知っている配列を持つ ので、あなただけのアレイ全体にわたって行くタイプのものの並べ替えを持っている。 JSONは、そういったことと、より多くの寛大です。 基本的な考え方は、このオブジェクトを構築している これらの3つのもののいずれかで構成することができる そのうちの複数のものから構成することができ、それらは入れ子にすることができます。 JSONの例のここでの並べ替え、 ここで、これらの中括弧は、HashMapを表しているかですが、 とHashMapには、基本的にキーのいくつかの並べ替えからマッピングしたものです 値のいくつかの並べ替えに。 あなたは、我々は、プロパティのキーを持っていることをここに表示されます そしてそれはこの全体のことである配列にマッピングの。 我々は、このキーisAwesomeですHashMapの別の要素を参照してください その真偽値、言い換えれば、真のプリミティブな値にマップされます。 プリミティブは、文字列にすることができます。彼らは、整数を指定できます。 彼らは、そのような何かboolsすることができます。 そして、あなたは、プロパティのポイントがそれで2つの文字列を持ってすることを、この配列の内容を参照してください。 自己相似と素晴らしい。 それらは、JSONの2つのプロパティであり、我々はJSONは驚くばかりであることがわかります。 それを見てもう少し密接に私が構築するつもりだ ここではJSONのより複雑な例。 配列、例えば、ちょうど空の配列から始めましょう。 しかし、それは退屈なものだので、私たちは、少しそれを埋めるつもりだ 私が言ったようにして、JSONの配列は、バインドされたタイプです ので、我々はまた、ハイテクである、ここに文字列を与える可能性があります そしてそれは、その配列の別の要素だ。 と同様に、我々はいくつかのマッピングを持っているつもりされている、ここでhashmappingを追加することができます。 これは、名前から文字列ビリーへのマッピングを持っているために起こっている。 私たちは、名前からビリーへのマッピングを持って、私たちはのマッピングを持っている 青に好きな色。 それは基本的にはJSONの良い例だ。 それは、どのような種類のは、おっとに取得し、それのさまざまな部分のコンマは、すべてを必要としています。 繰り返しになりますが、それがすべてでバインドタイプではないので、あなたは、どのような種類の型を持つことができる あなたが欲しいもの、アイデアの中にそれが自己相似だです。 言い換えれば、ここでこの権利は、この全体のことであるように、JSONオブジェクトであり、 これがちょうどあるように、あなたがたも、オブジェクトであるプリミティブを持つことができます 配列はオブジェクトまたはHashMapオブジェクトにすることである。 あなたが見るの一種ができるように、JSONはそれはとても万能だという点で、本当に便利です。 あなたはあなたがJSON形式で保存されて想像することができる可能性のあるデータを持つことができます。 それのAPIで使用する本当にいい言語ですその それはかなりあなたは何をしたいデータに関係なくことを意味するので、 JSONでそれを取り戻すためにいくつかの方法があるだろう。 この種のことのためにJSONが特に良いよう、いくつかのプロパティ。 あなたが見ることができるように、あなたはCS50でと仕事をしてきたことの多くに比べ それは記述することも非常に読みやすく、比較的非常に簡単だと。 あなたが望むなら、私はその例でやっていたようにあなたは、それをインデントすることができ、 それはあなたが本当によく見ることができる素敵な、かわいらしいバージョンを提供します。 しかし、また、それは、コンピュータのための読み取りと書き込みをすることも簡単です。 言い換えれば、それは、エンコードするために解析することが容易で簡単です これは、それがはるか​​に懸念しているデータを読み取るようにかなり速いということを意味します そしてJSONは本当に迅速に生成することができます。 これは、JSONと、そういったことの様々な部分へのアクセスにも非常に簡単です。 それはいいですし、さらに、それは自己相似であるという事実、 言い換えれば、あなたは、JSON内のJSON内のJSONを持つことができるという事実 データを格納するための本当にいいです。 一般的なAPIでの作業には本当に便利です別の部分はjQueryです。 アドレスを確認するにはJavaScriptを少し学んできた、これは良い方法です ウェブサイト内のHTMLとCSSを操作する。 しかし、それは同じ種類で、プレーンなJavaScriptのコードに痛みをすることができます JavaScriptは本当に冗長な言語である主な理由。 あなたは、構文の多くを学ぶ必要があり、非常に単純なことを行うこと それは、多くのコードを取るので、jQueryはJavaScriptのためのライブラリです。 言い換えれば、それはあなたがロードできるJavaScriptファイルです その後、特定の物事を行うにはjQueryの関数を使用します。 とjQueryは基本的にあなたの人生ずっと簡単になります。 これは、jQueryで数行にJavaScriptで数百行を下にかかるものが簡素化されます。 一般的にので、APIを使用している場合には特に便利です がAPIにアクセスすることがありますどのように、AJAXリクエストを行うことである と私はダビデが講演で言及していると信じているAJAXリクエスト あなたはサーバーのいくつかの並べ替えにネットワーク要求を作っているときに一般的に およびデータのいくつかの並べ替えを取り戻すと瞬時にページを更新する。 平野JavaScriptで線のクレイジー数字を取ると、その一方で 、すべてのヘッダーを検証し、スタッフのその種のすべての操作を実行する jQueryは、AJAXと呼ば本当にシンプルな機能を持ってい そしてあなたはAJAXでなければならないすべては、あなたがAPIを提供したいパラメータを与えることです APIの位置し、構成するいずれかのオプション追加のソート。 それはこの種のもののために、本当に、本当に素晴らしく、非常に便利です。 それは我々がAPIで、我々の手を汚さ開始に必要なすべてです。 私はいくつかの例を持ち出すとその異なる性質を探求するつもりだ そして、なぜ、彼らは様々な種類のもののために便利だ。 私は実際にあなたが表示されます最初の事は私が働いているものです NGRAMビューアである私の研究室、で、 とNGRAMビューアの基本的考え方は、単語のいくつかの種類を検索することができますです やフレーズ、それは時間をかけてテキストの特定のセットに登場したのはどのくらいの頻度で参照してください。 ここでこの例では、赤ちゃんのこのデータ·セットです それは1920年から2000年の間にニューヨークで生まれた。 我々は、名前のジェニファーのために、たとえば、検索することができます そして我々は、それが本当にそれほど使われていなかったプレ1960いることがわかり 我々は後年に入るとして、それがますます使用されるようになっている。 我々はまた、例えば、我々はジェニファーを比較すればそう、トーマスを比較を行うことができます 私たちは、トーマスが歴史を通してかなり普及している見ることができます ジェニファーに対し、より最近の名前です。 私たちはそういったことを行うことができます。 これは、アプリケーションがどのように動作しますか? 基本的には、APIを介して動作します。 言い換えれば、我々はここで特定のパラメータを持っています。 我々は、我々が実際に探しているかのパラメータを持っている れ、これらの名前になり、その後、我々はいくつかの他のプロパティを持っている、 Y軸とX軸のような。 あなたは、私たちは、限り、いくつかの異なるオプションがありますを参照してくださいすることができます 時間使用する解像度と、そういったこと。 私たちは、限り我々は、実際にデータベースから欲しいものをデータとして、これらのオプションを持っている そして我々は戻って、いくつかの有用な方法でそのデータを取得したい。 我々はデータベースを照会された場合、通常、直接それを行うために苦痛になるの並べ替えたい 赤ちゃんの名前については、おそらく、このデータはどこかにいくつかのデータベースに住んでいるので、 そしてそれは実際にそれを手動でクエリする必要が複雑になるであろう そしてデータは返したい値を正確に決められる。 言い換えれば、私たちは、この場合のみジェニファーとトーマス気遣い、 そして我々は、特定の軸とスタッフのその種のすべてに気になります。 どのように我々はこれを回避するのですか? もう少しこのAPIを掘り下げるために、私はあなたにこのプラットフォームの別の例を紹介します これは、わずかに異なるデータセットを使用します。 このデータセットは、代わりに赤ちゃんの名前であることの、ちょうど実際に全体です 、開かれているライブラリーのパブリケーションデータベースを印刷 これは、過去100年かそこらにわたって公開されてテキストの巨大な源である。 アイデアは、我々はテキストの何百万、何百万人のこのcompositoryを持っていることです 我々は今、インチ別の単語やフレーズを検索できる ここでは少し違った、前の例から変化する例を次に示します。 私は、我々はこれらの3つの検索クエリを持っているである、お見せした 戦争、戦争、戦争guerreある、フレンチ言葉。 そして、我々は、データベースの合計3つの異なるセクション内で検索しています。 言い換えれば、この最初のクエリで、我々は米国のみで検索している、 英国だけで、2つ目とフランスのみで出版された作品から三インチ 我々は、いくつかの興味深いパターンが出現してください。 例えば、私たちはここに右周りに見ている - おっと、私は軸を少し台無しにしますが、ここでは、この範囲内で右を見ることができます 南北戦争の周りにアメリカ版で大きなスパイクがあり はなく、このような大きな他の二つのスパイク、それは明らかだから アメリカ南北戦争は、その時点で何が起こっていた。 我々は、そこにいくつかのクールなものを見ることができます しかし、私たちが本当に気にすることは我々がこのデータを取得する方法です。 私は少しでこのアプリでは、舞台裏に連れて行きます。 巧妙なトリックでは、サイトおよび種類の作業しているかどうかを知りたいです 舞台裏で何が起こっているのは、開発者ツールを開くことができます。 私は、Chromeの開発者ツールを使用するつもりだし、それらを取得する あなたは、コントロール、シフト、J、およびJavaScriptコンソールに表示されますを行うことができます。 ここではいくつかのタブがあります。 彼らはすべての異なる状況下でかなり便利ですが、私は、ネットワークを気に タブには、現在、私は実際にその作業を取得するために更新する必要があります。 あ、ごめん。 これはランダムな例を与えるのを好む。 さて、我々はその代わりに、この例を使用します。 アイデアは、このAPIがここにありです そしてあなたは、APIが返しているかを正確に確認することができます。 これにより、アプリケーションはその要求を送信したA​​PIから戻ってきているものです。 私は少しでズームしましょう​​、 そして我々は基本的にそれだけではJSONのキーと値のペアのシリーズです見ることができます。 言い換えれば、我々は値をマッピングのここにこのハッシュマップを持っています。 言い換えれば、それは値にマッピングする年だ。 1765年には90回使用されているものは何でも私達は最初にのために検索された単語 100万人のうち、私たちはこの結果を戻す取得している。 我々はここで、この小さな結果のヘッダを持っているので、それは正確にはJSONではありません しかしここでは、このオブジェクト全体がちょうど巨大なJSONのブロブであることに注目してください。 我々は、この全体の要素が含まれているここで配列を持っている そしてあなたは、全体の要素が終了することを見ることができますし、我々はもう一つの大きな要素を持っている それが終わりまでずっとダウンし、それはここで終了。 我々は、その中の2つのオブジェクトを持つ非常に大きな配列を持っている し、それらのオブジェクトのそれぞれがハッシュマップです。 あなたは、私たちがマッピングを持つハッシュマップの各々の内部に見ることができます このインデックスは0〜値と別のハッシュマップには、この値の値の、 再びY軸の値にX軸の値をマッピングしている。 あなたは、JSONは少し複雑ですが、全体的に、取得することができます参照してください。 それは実際には非常に便利だし、それはと比較してアクセスすることは非常に簡単です 表記の他のさまざまな形態。 限り我々が実際に取得するためのAPIにデータを送信しているものとして、 私は少しここでバックエンドに行くつもりです。 これは、Webアプリケーションの相互作用のすべてを扱うのビッグJavaScriptファイルです それで我々はこの中で最も気にしないが、我々はそれについていくつか気にしない。 たとえば、我々は、このbuildQuery機能を気に この関数のアイデアは基本的にそれがページの周囲に見ているし、 言い換えれば、ユーザーが照会をしたいのかを考え出す 彼らは彼らの入力検索用語を、したこれらのボックスをチェックして 異なるY、彼らが選ばれたと、そういったことのすべてのことをしたX軸の値をチェックし、 そしてそれは私がそれからAPIにオフ送ることができますこのクエリ値を吐き出すために起こっている。 これは、複雑に見えますが、それはかなり複雑である 私はインない事実、私はすでにこれをやっているつもりだ何、それは素晴らしいです - 私は正確には、そのクエリの値を出力するためにコンソールを取得するつもりだということです それはAPIに送り出していること。 それは右ここに実際にです。申し訳ありませんが、それは多くのものを出力します。 しかし、これは右ここで、我々は気にこれが何を目的としている。 これは、クエリオブジェクトです。 言い換えれば、これは、WebアプリケーションがAPIに送信しているものを正確になり、 ので、少し内部を見てみましょう、と我々は我々がここでいくつかの値を持って参照してください。 我々は、万語あたりの出現である、我々はこのカウントの種類を持って参照してください。 これは、私たちがこっちY軸に選択したものを正確になります。 それはから来ているところです。 我々は、いくつかの特定のデータベースがあることを意味し、データベースの値を持っている このデータはに住んでいる、我々は具体的に、そのデータにアクセスしたい として、例えば、赤ちゃんの名前のデータではなく。 その後、我々は、このグループの値を持つ とは対照的に、年間で我々は、検索したいことを言っている 他のX軸の値。 その後、我々はいくつかのAPIは、複数のことを実行するメソッドを持っています。 言い換えれば、このAPIはまた、他の種類のデータを返すことができます しかし、この場合には、我々は、Y軸の値にX軸の値のそのマッピングをしたい。 それはだがやるように指示されているもの、 そして我々は2つ​​の値が含まれているこの検索制限の配列を持っています。 最初のものは、すべての値である、我々はここで見ているものです 上部にその最初の小さな箱の中に含まれていました。 言い換えれば、私たちは言葉の戦いを探したい、と我々はそれをフィルタリングする アメリカ文学の中で英語のテキスト。 我々は、米国でこの国を持っています。 私たちは英語の言語を持っているので、我々は、これらのさまざまな部品がすべてそろっている それはすべて私たちが望むまさにAPIを語っている。 我々は、我々は戻って取得したデータがまだあるかわからない しかし、我々はデータが一定の形をとるのが分かっている。 この例では、複雑な側に種のもので、 そしてあなたは、必ずしもAPIにこの複合体を使用していないであろう、 しかし、これはあなたのAPIで何ができるかの範囲とパワーを示すことです。 言い換えれば、我々は基本的に入力ボックスを持っている比較的単純なクエリのシステムを使用して 別の場所でいくつかの他のセレクタと。 私はここに戻ってズームアウトしてみましょう。 我々は、いくつかの異なるメタデータの選択と入力ボックスを持っている そして我々は、Y軸とX軸の選択肢を持っています。 私たちは、実際に、その多くのフィールドを持っていない 我々は、我々は、APIのいくつかの並べ替えを照会することができるしている非常に簡単に見ることができます そして、戻ってデータを取得し、このチャートに入れて これは、有用な方法でそれを表示しようとしている。 皆さんに馴染みのビットかもしれないもう一つの例を見て 我々はFacebookに回すつもりです。 FacebookのAPIはFacebookグラフと呼ばれ、 そして基本的にはそれが何を意味するかは、Facebookがこの巨大なデータベースとしての地位を見ている すべてお互いに一定の関係を持っている様々な部分の多くの。 言い換えれば、私はFacebook上のユーザので、私はプロファイルを持っている そして、私はまた、特定の友人を持って、それらの各々は、プロファイルを持っている と私の友人のそれぞれが、その上に別のコメントがある壁があり、 そしてそれらのコメントのそれぞれが同類とそういったことのすべてを持っています。 Facebookに異なる部分がたくさんあり​​ます。 、それは非常に複雑なAPIだし、あなたがそれを行うことができますトンはあり それは使用するために、実際にはかなり簡単です。 私は、graph.facebook.com / billyjanitschに行くことによってアウトを開始するつもりだ これは私の一意のアカウント名、アカウント名はどちらかになるでしょう 単語のいくつかの種類が、あなたはそれを選択した場合、またはそれだけの数字の文字列であるかもしれません。 我々は戻って取得するのは非常に基本的な情報です。 我々は、私はビリー、Janitschある姓、ある最初の名前を持っていることがわかります。 私が持っているユニークなFacebookのIDがあります。 あなたは、私が男性だと、私は私の言語設定となっていることがわかります イギリス英語へ。 言い換えれば、我々はここに非常に基本的な情報が表示されている。 それはあまりにも多くはないが、それは私達に何があるかのアイデアを与えるん。 我々は、例えば、デビッド·マランに同じことを行うことができます。 私は彼の名前がdmalanだと思います。 我々はデビッドマランが固有のIDを持って参照してください。 彼は、姓、名、ミドルネーム、姓を持っています。 私たちはまた、彼が男性だと、アメリカ英語に設定され、彼の言語を持っていることを参照してください。 言い換えれば、我々はここに非常に基本的な情報が表示されている。 我々は何か他のものをチェックアウトしようとしても、何が起こるか? Let 'sは、私はデビッド·マランはFacebookを利用して言っていたのかに興味があると言う。 私は/同類を行うことができます。今、私たちは問題に実行しようとしました。 我々は、アクセストークンを言うエラーのいくつかの並べ替えを持っている このリソースを要求する必要があります。 あなたが考えてみればそれは奇妙だろうので、しかし、それは実際には理にかなっている あなたは、Facebookのデータベースのすべての単一の部分にアクセスすることができれば ただシンプルなA​​PIのいくつかの並べ替えから、右か? 言い換えれば、おそらくあなたの情報は、それを望んでいる誰もがアクセスすることはできません。 このエラーは、それが何を意味するかを正確になります。 一部のAPIは、そのデータにアクセスするために、特定の権限が必要です。 Facebookのような、さらにより高度なAPI、 特定の権限が特定の物事を行うことが必要になります。 私はデビッドマランについては、この基本的な情報を見ることができます。 私は、彼が男性だということと、彼が米国に住んでいることがわかります しかし、私は本当にそれを越えて何かを見ることができません。 今のところこれを回避するために、Facebookはこの素敵なツールを持っています これはグラフのAPIエクスプローラで、というアイデアは、あなたが並べ替えることができますです 自分のアカウントに基づいて、自分のための権限を設定する その後具体的にあなたのアカウントが表示できることを確認します。 たとえば、私がしなければgraph.facebook.com/billyjanitsch/likes- おっと、私はここに私のトークンを再検証する必要がありますね。 オーケー。 私は、再び偉大なことをしたら、今、私は戻って、このオブジェクトを取得することを参照してください。 これは私がカテゴリゲームとおもちゃであるプールの麺が好きだという。 私はカテゴリ動物であるセイウチが好き。 これらは、私の実際のFacebookの同類である。 彼らは、恥ずかしいの一種だ。 しかし、我々は、このデータはすべてJSONで返されていることがわかります。 それはかなり読みやすいです。 言い換えれば、我々は、配列のいくつかの並べ替えに、このデータのマッピングを持っている この配列の各要素は、マップHashMapです などのように、カテゴリの名前。 のような各々が固有のIDを持っています。 我々が得ることができるデータの異なるあらゆる種類のものがありますが、 そしてあなたはCS50最終的なプロジェクトのためにFacebookのAPIを使うことに興味を持っている場合 か何かのためにそれは実際には非常になんとかだように。 基本的には、認証の事を回避する方法Facebookは のOAuthと呼ばれるシステム、またはオープン認証を使用しています と私はOAuthまたは異なるタイプのため、今ではそれに入るためにしたくない 認証のため、別のAPIの間の多くの変化する傾向がある ので、私は、一人一人の上に行くに長い時間を過ごすことができました しかし、彼らは実際にはかなり自明だ。 もしGoogleのFacebookのAPI場合、それは非常に読みやすいです。 全体の仕様ではあります。 たとえば、これは、FacebookのAPIのためのドキュメントです そしてあなたは、私がユーザーページ上だ見ることができますので、私はすべての物事のさまざまな種類について学ぶことができます な限りのデータを取得可能であることを 私はそれらにアクセスするために必要であること、また、異なるパーミッション。 我々が見たように、我々は、名前や性別にアクセスするためのアクセス許可を必要としない しかし、それを越えて、我々はほとんどの事の権限が必要なのでしょうか。 このページには、というか、このウェブサイトには、どのように取得する方法を教えてくれます 自分自身を認証できるようにトークン。 ほとんどの認証システムでは、トークンのいくつかの並べ替えを使用 このユニークな値で、本当に長くてランダムな文字列ですが、どこで取得する その方法は、彼らはあなたがあなたと一緒に作っていることを要求に関連付けることができます。 言い換えれば、彼らはあなたが彼らのデータを使用して不審な何かをやっていないことを知っています。 彼らはあなたが取得しているかを正確に知っている。 彼らはまた、あなたがその情報を表示する権限を持っていることを知っています。 あなたは、Facebookアプリを作ったし、あなたのアプリケーションは、特定のユーザーを持っている場合、 と、それらのユーザーは、アプリが自分のプロファイルの特定の部分にアクセスすることを許可した 次にどんなAPIキーまたはそのアプリが使用しているトークン それらのユーザーのデータにアクセスできるようになります。 、これは複雑に聞こえるかもしれないが、それはあまりにも悪くはない そしてあなたがFacebookを使用したい場合、私は非常にすることをお勧めする そのAPIで遊んで検討してください。 それは非常にクールだし、あなたはそれでたくさんのいろいろなものを行うことができます。 ユーザはあなたにこれらの権限を与えられている場合、あなたもAPIに戻ることができます そして、私は実際にこのユーザーのウォールに投稿したい、または私は彼らが写真を投稿したいと言う そしてあなたのニュースフィードに理由ですあなたは時々それらの迷惑なものを買ってあげる あなたの友人はそのような変なサイトか何かのいくつかの並べ替えにこのビデオを見てきたと言いました。 そのアプリは、その人のウォールに投稿するためにアクセス権が付与されているからだ。 アイデアは、全体的な、FacebookのAPIは非常に複雑なだけでなく、本当に便利です。 間違いなくあなたは、まだ最終的なプロジェクトを探しているなら、チェックアウトする価値がある。 私は上に行くつもりしているAPIのもう一つのスイートはCS50のAPIです。 私はここにズームしましょう​​。 CS50は、実際のAPIの全シリーズをまとめました あなたは、最終的なプロジェクトのために、またはちょうどあなたが作っている何のために使用することができます。 そして、彼らは主にハーバード大学関連のだ、と彼らはHUDはメニューによって異なります 例えば、あなたがリストにアクセスできるようになるこのハーバード·イベントAPIに 異なるハーバード大学で起こっているイベントと、そういったこと。 そして私たちは、これらのいずれかをクリックして、それのための仕様を得ることができます あなたは、任意のAPIのために見つけることができるでしょう、とアイデアがある それはAPIから要求する内容と、それを要求する方法を具体的に、あなたが知ることができます。 言い換えれば、私は明日起こっているすべてのイベントをしたい場合 それから私は、明らかにそれのためには、一定の形式で私がしたいことをその日付を与えるために持っている AとB、それは私に戻って与えるために起こっているのかを正確に教えてくれるでしょう。 それは、私はあなたにこのJSONオブジェクトを返すつもりだと言うだろう またはあなたが見ることができるように、様々なフォーマットがあります。 また、たとえば、CSVとしてデータを返すことができます。 しかし、あなたはそれを取り戻すときに、そのデータが見えるように起こっているか正確に知っている ので、あなたはそれで特定の物事を行うことを期待することができます。 我々は、APIを照会したい場合に、下にスクロールして見ることは、たとえばことができます カレンダーを得るために、我々は、この特定のURLを使用することができます それに我々は正確に必要なデータになるだろうしている特定のパラメータを与える。 と同様に、我々は、特定の形式でデータを戻したい場合は、 次に我々は、CSV形式でデータを出力するためにそれを求めることができ そしてそれは我々がAPIに渡していることだけで、別のパラメーターです。 そこを行うためのクールなものがたくさん。 私は間違いなくCS50 APIを調べることをお勧めします。 私は少しのために特にこのハーバードフードのAPIを見てみたいと思います。 私が実際に設計したことの一つは、このハーバードNOMSサイトです これは、その日のためにHUDはメニューを取得するCS50フードAPIを使用しています。 と拡張子の学校の人々のために、HUDははハーバード大学のダイニングサービスです。 何を得ることは我々がランチを参照してくださいので、毎日の食事がすべて含まれていますこのページである。 我々はいくつかの異なったカテゴリがあります。我々は、Beanと全粒粉の駅を持っています。 私達は玄米ステーションが備わっています。 我々は、これらのいくつかの食品を持っているブランチに見ることができます。 我々はそれらをクリックするなら、私たちは、栄養情報を取得します。 あなたは不思議に思っていたケースで​​、これは、グレープフルーツの栄養情報です参照してください。 それで再び、我々はここで少しバックエンドを覗きしようとしている そしてこれが、このデータを取得するためにやっているかを正確に確認。 そしてそれは実際にはまったく非常に複雑ではないことが判明した。 このファイルには、少し厄介に見えるが、これはWebサイト全体を処理していることを心に留めておく 私は下にスクロールした場合、我々は、この変更データ関数を参照してください。 今、ちょうど明確にすること、これは、CoffeeScriptはで書かれている あなたはおそらく前に見ていない言語はどれですか。 しかし、それはかなり読みやすいので、擬似コードであるかのように私はそれを見ていきます。 変更日は、この日付の値を取り込むために起こっている関数です。 そしてそれはまた、我々はできるだけ気にしないものは、最初に必要となるだろう。 しかし、重要なことは、それはこの日付を持っているということです そしてその日は、私たちが食品のすべてを要求したい日です。 そしてあなたは、私たちがここで構文の少しを持って参照してください。 これは、基本的に読める形式にその日付を解析している。 言い換えれば、APIは、特定の形式で日付を必要とします。 あなただけの2012年11月16日ADを言うことはできません。 それはそれで何をすべきかを知ることができません。これは、特定の形式で日付を望んでいる。 我々がここでやっていることは、まさにその形式にそれを与えている これは、年の値、次にハイフン、月の値です 別のハイフンと日付値。 そして、我々はまた、我々はデータをJSON形式で出力することがしたいと言う。 今、私たちは、このAJAXリクエストを作っている、と私は前に述べたように、 jQueryは、すべてを行う必要が指定されているこの超便利なAJAX機能を持っています ここにいくつかのパラメータ、そして、それは戻って正確に何をしたいあなたを与えるだろう。 我々は、我々はそれに行きたいURLがこのCS50フードAPIであることを伝えている その我々が仕様から得た。 我々は、JSONでデータを望んでいると言うこと 我々はそれを我々がここまで定義して、このデータを与えるつもりだ。 これは、我々のための食糧項目を希望する日です。 そして、我々がしなければならないすべては、成功した機能のいくつかの並べ替えを定義されている これは、APIがそのデータを返すときに何が起こるか基本的にです。 言い換えれば、私たちは、私たちが望むことはすべてのパラメータをパッケージ化しました このケースでは、我々はそれとJSONで我々はそれを望んでいるという事実を望んでいる日である、 私たちは、大丈夫なので、今のAPIが言っている、APIに退場 ここにあなたのデータは、私があなたのためにそれを戻ってきました。 私たちは、与えられたことを意味成功の機能を持って、そのAPI 正常にいくつかのデータを返しますが、我々はそれを使って何を行うのですか? そして、それは我々が行うすべては、この更新プログラムメニュー機能を呼び出すことが判明する APIが戻ってきたものは何でも、私たちはそれを検索することができます そして我々がやっているすべてはここに新しい構文の束を使用していることがわかり HTMLを更新し、この新しいデータを挿入することができます。 これは何ができて、我々はどちらの側にもこれらの矢印を持っているであり、我々は、クリックすることができます そして、今、私たちは次の日のデータを見ていると、再び次の日のために、 それは、その日付の値を更新するとAPIを照会するのは、それぞれの時間 いくつかのデータを取り戻すとサイトにそれを入れて。 繰り返しになりますが、超、超便利を見ることができます。 このアプリは、一緒にハックする私に数時間かかった と私は明らかに、少しより多くの経験を持っていますが、あなたのCS50最終的なプロジェクト 非常にこのようなものを見ることができます。 APIは、彼らが取ることを努力の量を超強力です。 私は上に行くつもりです最後の事は広く、さらにいくつかのAPIです。 私は、限り、彼らが具体的に何をすべきか、それらに限り取得することはありません しかし、私はあなたにそこにあるもののアイデアを与えるだろう。 2本当に有用なもの、あなたはデータ解析または可視化に興味があるなら またはそのような何かは、Freebaseは、ウィキペディアです。 ウィキペディア - たぶん、あなたはすべてのノウハウと、無料オンライン百科事典、 そしてそれは実際に、例えば、あなたがしたいのであれば、APIを持ってい テキストやタコの記事のすべてを取得 あなたは非常に簡単にそれを行うことができます。 ただ、私はこのように、返されたデータをしたいのですが、ウィキペディア、ちょっとAPIを言う そして、私はこの形式でそれをしたいのです、私が好きな記事はタコです 非常に迅速にその情報をあなたにお返しします。 あなたのサイトのいくつかの並べ替えをしたい場合、これは本当に便利です それはウィキペディアまたはそのような何かのためのより良いビューアです。 それは限りAPIとしては少し難しいですが、Freebaseは、類似したのようなものです。 Freebaseはそれがオンライン百科事典だという点で、Wikipediaのようなものです これは、たくさんとさまざまなトピックのすべてのソートについての異なる大量のデータを含む しかし、それはWikipediaとは若干異なるリレーショナル·データベースに格納されている。 ウィキペディアは、他の記事にリンクされ、その記事と記事が掲載されています ほとんどの部分は、場合は、タコのためのデータが欲しい あなたはタコの記事に移動し、そのデータを取得し、テキストの束を持っている タコについて、素晴らしいことだそう。 Freebaseはその中で少し複雑な方法で動作します すべてのものがお互いに関連しています。 言い換えれば、我々はタコを探している それはそれに関連付けられているカテゴリの束を持っています。 例えば、それは動物だ、それは、水中に住んでいる それは一定の体温を持っています。 知りません。 これらのカテゴリのすべては、あなたが行くことができ、他の場所へのリンクです 同じカテゴリで物事を見ることができます。 言い換えれば、タコ·データ·セットは、すべての動物のためのデータセットへのリンクを含んでいるでしょう そしてそれは私が本当に素早くデータベース内を移動できますでしょう。 あなたが比較のようなものをやっている場合、これは非常に便利です。 言い換えれば、ある事を考えると、あなたが見たい ほかに何か、それはに関連だと、それに関連するではありません他に何を参照してください。 そういったこと。それはいくつかの方法において有用であり得る。 あなたの挑戦の詳細を探しているといくつかのより複雑なことを行うことができるようにする場合 私はFreebaseのAPIを見てみることを検討する。 しかし、大部分は、Wikipediaは情報を取得する限り行くことは非常に簡単な場所です。 私が見ていきますことを別の場所はLast.fmである、と私は実際にサイトに行くつもりです 場合には一部の人は慣れていないですが、Last.fmは基本的に音楽である 味と勧告のウェブサイト。 あなたがアカウントを作ることができます。 あなたの音楽プレーヤーからのアップロード、音楽を始めることができます ウェブサイトに、基本的にそれはあなたの音楽推薦を与え始めます あなたは耳を傾けるものに基づいて。 たとえば、あなたのプロフィールページ - これは地雷に行けば あなたが最近聴いている曲のリストを持って見ることができます。 あなたは、全体の好きなアーティスト、そういったことのすべてを見ることができます そして再び、Last.fmの後ろの大きなAPIは、そこ  、あなたがたくさんの、本当にクールなものの多くを行うために使用することができます。 たとえば、私は、このLast.fm ToolsのWebサイトを持っている友人のページに行きます。 これは、実際にLast.fm APIの上に構築された別のプラットフォームです それはかなり興味深い多くのことを行います。 私は、例えば、私のユーザー名でログインした場合は、 私は、例えば、タグクラウドを生成するためにそれを求めることができ と何になるだろうの画像を私にお返しです すべての様々なジャンルと私が聞きたいこと、そういったこと。 それはどのようにこれをやっている? 非常に基本的にはここで、このユーザーはLast.fmのAPIに言っている。 私は、彼らが今までに聞いたことをすべての曲のジャンルを知りたいのですが、 、あなたはLast.fm APIに非常に単純なAJAX呼び出しを行うことにより、それを行うことができる。 あなたは大きなリストが返されます、そして、明らかにいくつか他のものが行われている ワードクラウドにそれを回すために、しかし、あなたは、全体的な見ることができます それはアクセスすることは非常に簡単で、非常に使いやすいです。 物事の数のために本当にいい。 私は全体的に言うよに関するすべてだと思う。 私は一般的にAPIについて述べておきます最後に一つということです あなたは時々、レート制限と呼ばれるものに実行されます とレート制限の考え方は、APIを乱用したくないです。 言い換えれば、それはこれらのウェブサイトの多くのAPIを持っていることは本当にうれしいです あなたは、に行くと無料で使用することができます。 ただし、一日あたりの要求数百万あるいは何十億をとっているなら、 例えば、あなたは無限に問い合わせるの無限ループに陥っている場合 いくつかのAPIの一種と膨大な量のデータを取り戻す、 明らかにそれは良いではない、このレートは機能を制限しているAPIのたくさんやるが何であるかそう それは、あなただけのIPアドレス、またはそのような何か1日あたり1,000件の要求を行うことができると言います。 そして、あなたは多くのテストと、そういったことをやっている場合、 あなたは時々、その中に実行することになるでしょうし、突然それはあなたを遮断する とノーと言う、私はあなたにそれ以上のデータを与えていない。 あなたは何をしたいのは、ルールで遊ばです。 あなたは慎重にAPI仕様をお読みになることを確認したい。 それはあなたのようなそれに接続されている一定のルールを持っている場合、一日あたりのX照会を行うことができます またはあなただけのデータベースの一部を特定の回数にアクセスすることができます またはあなたがそれに固執確認したいそのような何か。 限り、あなたは、それらのルールの中で遊ぶとは、おそらくAPIを使用して、本当に素敵な時間があるでしょう。 あなたの全体の持ち帰りは、APIですが、本当に便利です。 そこに、ほぼすべての大手ウェブサービスのAPIがあります。 Googleのツールスイートは、Googleマップ、Google Earth、のほとんどあらゆる部分 Gmail、Googleカレンダー、それらの事のすべては、APIを持っています。 あなたには、サーバーからデータを取得し、サーバーにデータを送信するには、両方のそれらを使用することができます。 あなたはカレンダーアプリを作りたい場合は、他の言葉で、更新することができます 誰かのGoogleカレンダーには、そのためのAPIがあります。 あなたはどこにあなたを伝えるために起こっている何かを作りたい場合 特定のアドレスの場所は、そのためにGoogle Maps APIを使用することができます。 APIは素晴らしく便利です、そして、彼らはどこだ。 あなたは、アイデアのいくつかの並べ替えに興味があるなら、 関連のAPIを使用すると、大量のデータを取得するために使用できる、おそらくあり 非常に迅速かつ非常に簡単。 それでもプロジェクトを探しているなら、あるいは単に周りに再生したい場合 一般的には何かで、APIは間違いなくやって価値があります。 おかげで、私は君たちが持っているかもしれないあらゆる質問に答えることがうれしいです。 わかりました、どうもありがとう。 [CS50.TV]