The Internet: Behind the Scenes
RESTとは、REPRESENTATIONAL STATE TRANSFERの略である。もともとはもっと抽象的な意味だったが、現在では、pythonの関数のように、特定のパラメータの値を入力として受け取り、長いテキスト文字列の形で出力を生成するWebサイトの略語として使われるようになっている。
APIとは、Application Programming Interface(アプリケーション・プログラミング・インターフェース)の略です。APIは、外部のプログラム(アプリケーション・プログラム)が、あるプログラムに特定の計算を実行するよう要求する方法を規定するものである。
REST APIは、この2つを組み合わせたもので、外部プログラムがWebサイトに対してHTTPリクエストを行い、計算の実行と出力データの取得を要求するためのものである。Webサイトが他のコンピュータプログラムからの要求を受け入れ、他のプログラムが消費するための出力を生成するように設計されている場合、Webブラウザで人間が消費するための出力を生成するWebサイトとは対照的に、それはWebサービスと呼ばれることがあります。

データは適度な大きさのパケット(最大65,535バイト、通常はもっと小さい)に切り分けられる。Data is chopped up into reasonable sized packets (up to 65,535 bytes, but usually much smaller).

developertool のnetwork から、何が起きているのかわかる。
URL とargument内のpath?query parameter



requestsモジュールのget(URL)メソッドでresponse objectをもらう
そしてjson.dumps()でPython Objectにして構造を見る。
json.dumps()できない???
よくわかりません。
parametersの?は辞書の開始、&は別のkey-value pairを指定する。
URL内のparametersの%20はスペースを表す?
For example, in the following, the base url is https://google.com/search. A dictionary with two parameters is passed. Thus, the whole url is that base url, plus a question mark, “?”, plus a “q=…” and a “tbm=…” separated by an “&”. In other words, the final url that is visited is https://www.google.com/search?q=%22violins+and+guitars%22&tbm=isch.
paramsはdictionaryでなくては読み込まない。
import requests
print(“ こっちでもいける?”)
#page = requests.get(“https://api.datamuse.com/words?rel_rhy=funny”)
print(” けどこっちもいいよ。”)
kval_pairs = {‘rel_rhy’: ‘funny’}
page = requests.get(“https://api.datamuse.com/words”,
params=kval_pairs)
print(page.text[:150]) # print the first 150 characters
print(page.url) # print the url that was fetched
#辞書の作り方の一つに dict = (k1 = v1, k2 = v2, k3 = v3)があることを思い出せ。
getしようとして、成功しなかったときのメッセージ HTCPCP
よくわからなんだ。

requestURL() function
正しい場所にアクセスできているか?
websiteの情報はCacheされたものか、それともoriginalか

casheされたデータを扱う利点
REST APIを使用したソフトウェア開発において、キャッシュが有効な理由は少なくとも4つあります。
データを提供するウェブサイトの負荷を軽減する。データを提供してくれるウェブサイトの負荷を減らすことができます。他の人のリソースを使用するときは、常に礼儀正しくありたいものです。たとえば、15分間に15回のリクエストを行うと、エラー・レスポンスが送信されるようになる場合があります。それはあなたにとって混乱であり、迷惑なことでしょう。
プログラムの実行速度が速くなる インターネット上の接続は、多くのデータを要求する場合、数秒、あるいは数十秒かかることがあります。大したことではないと思われるかもしれませんが、プログラムに変更を加えて実行し、ほとんど即座に応答が得られると、デバッグはずっと楽になります。
複雑なデータを処理するコードでは、実行するたびに戻ってくる内容が変わってしまうと、デバッグが難しくなります。iTunesのPodcastやTwitterの最新ツイートなど、リアルタイムのデータを取得するプログラムを書けるのは素晴らしいことです。しかし、特定のツイート(外国語のツイートなど)でのみ発生する問題がある場合、そのコードをデバッグするのは難しいでしょう。問題のあるデータに遭遇したときは、そのコピーを保存しておき、保存した静的なデータのコピーでプログラムのデバッグを行えるようにしておくと便利です。
データを取得するコードの自動テストも、データが絶対に変化しない方が実行しやすく、デバッグに役立つのと同じ理由です。実際、演習であなたのコードをチェックする自動テストでは、キャッシュされたデータを使用することにしています。
例えば、データがいつ変更されたかを常に知りたい場合、デフォルトではすでにキャッシュされたデータに頼ることになりますが、これは問題があります。しかし、動作するコードの開発に取り組んでいる場合、キャッシュはトレードオフの価値があります。
コメント