Fetch APIを触ってみた (GET編)
Fetch API は PromiseベースのXMLHttpRequestといった感じのAPI
Promiseベースのため、thenやcatchを使い、処理を書いていく。
この記事はFirefox 39 Nightlyのfetchを元に書いています。まだStreamではありません。
このエントリーではArrow function を使用するようにします。
fetch("example.com/some.json" {
"method": "GET",
"mode": "cors",
"headers": {"some-header": "value"},
})
.then((response) => {
console.log(response) // Response
console.log(response.status) // statusが表示
console.log(response.headers.get("Content-Type"))
response.json()
.then((data) => {
console.log("This is json", data);
}
.catch((err) => console.error(err));
}
})
.catch((err) => console.error(err))
response.jsonを呼び出すことでjsonとしてデータを取得できるが、そこから返されるのもPromiseなので、 thenとcatchをつかって処理を分けることができます。 response.json以外にもresponse.blob, response.arraybuffer, response.textなどがあります。
response.headers.get(header_name)とすることでHeaderの情報を取得できます。
URLの他にオブジェクトを渡すこともでき、"method", "mode", "headers"などを含めることができる。
"method"はこのリクエストのhttp methodを指定する。(GET, POST, PUTなど) デフォルトではGETになる。
headersはこのリクエストに付属するHeaderである。しかし、XMLHttpRequestと同じように、一部、含められないHeaderがある。
含められないHeaderについてはここが詳しいです。
Forbidden header name - Glossary | MDN
Forbidden response header name - Glossary | MDN
"mode"は以下のものを使用できます。
"same-origin" 同一オリジン以外のリクエストはrejectする
"cors" 適切なCROs Headersを返す他のオリジンも許可する CROs Headersとは
- Cache-Control
- Content-Language
- Content-Type
- Expires
- Last-Modified
- Pragma
の事を指す。
"cors-with-forced-preflight" 実際のリクエストの前にpreflight checkを行うようにする
"no-cors" 内容が確認できないリクエストであることを示す。(CROs headersがなくstatusやdataを確認できない。[Globalなfetchでは使用できない])
これから、ES6が普及するにつれて、fetchも普及していくと思います。
かなりPOST リクエストに関することも書いてしまったかもしれませんが、POSTについてはまた書くかもしれません。
参考になったエントリー
Fetch API 解説、または Web において "Fetch する" とは何か? - Block Rockin’ Codes
Broadcast Channel APIを触ってみた
Firefox38で実装されているBroadcast Channel APIを触ってみた。 感想は、 簡単にフレームやタブ、ウィンドウ間の通信ができていい感じ。
この図が示しているように幾つかのcontextがBroadCastチャンネルに接続して、通信を行う。
var broadcast = new BroadcastChannel("broadcast"); //接続、または作成
broadcast.postMessage(data); // データ送信
broadcast.onmessage = function (ev) {
console.log(ev.data);
} // 送信されたデータの取得
broadcast.close() // 接続の解除
こんなふうに非常に簡単にできる。 コンストラクタに渡す引数がChannelのidになり、すでにあるidを渡すと既存のチャンネルに接続できるようだ。
デモ
"Open Another Page"をクリックすると別のタブで新しくページが開きます。 片方のページで文字を入力して、send をクリックするともう一方のページの文字が変わります。
参考
ワダエフェ〜ムな物を作った。(Official)
最近話題のWada.fmのジングルを聞けるものを作りました。(非公式)(公式)
これでいつでもどこでもワダエフェ〜ム!
疲れた時にワダエフェ〜ム!
悲しい時にワダエフェ〜ム!
バブの泡でイイカンジの時にワダエフェ〜ム!
など、いろいろな時にお使いいただけます。
「さいきんのおたよりぃ」も収録! 新しくPodcastを始めたくて、お便りコーナを作りたい人ぴったり!
使い方 大きなWada.fmの文字をクリックしてください
text-shadowやaudio element を使っているため古いブラウザでは見れないかもしれません。
追加して欲しい機能、問題点などがあれば、Pull request, issueをガンガンお願いします。 twitterで#wadafmbuttonでもOKです。
ソースはこちら
Changelog
- 2015/03/09
- 高速連打に対応
- 100回クリックすると・・・
- 2015/03/31
- さいきんのおたよりぃ〜
Let's enjoy!
FirefoxでH.264サポートについて
Firefox33からCiscoのOpen H.264がサポートされます。
そのため、これまでサポートされていたもの以外の Mac や Windows の Firefox などでもH.264が再生できるようになるそうです。
MP4が再生できるようになるのはかなりいいですな
しかし、下記のリンクのMozillaのブログにあるように、
"Cisco が MPEG LA に特許ライセンス料を支払います。"
とありロイヤリティフリーになったわけではありません。
コーデック関係は特許の問題が絡んでくるのでいろいろややこしいですが、早くオープンな標準が確立してほしいですね。
Firefox — Aurora Notes (33.0a2) — Mozilla
Cisco の H.264 コーデックにより Web 上でのビデオの相互運用性が向上 | Mozilla Japan ブログ
マウスでぐりぐり動かせる人工衛星のモデルがかっこいいChrome Expriment
動画の中に動かせる3Dモデルが出てきたりして、JavaScriptだけで、できているとは思えない ものがいっぱいです。
人工衛星の現在の位置確認も動かしながらできます。
この彗星は動画の中に動かせる3Dモデルとして登場します
ちなみにこの人工衛星はISEE-3というもので、Wikipediaによると1978に打ち上げられ、1997年に運用が終了したようですが今年には民間団体がこの衛星の運用を再開し、データをインターネット上で公開する事を目指しているようです。
WebGL の ちからって すげー
A Spacecraft for All: The Journey of the ISEE-3
※ Google Chrome推奨です。
Googleの遊べるロゴでもう一度遊びたい!
Googleの検索のページのロゴが記念日などの際にそれにちなんだものにかわります
その中には、
パックマンなど
ロゴで遊べるものもありますが、次の日には元に戻ってしまい遊べなくなってしまいます。
しかし、Googleの検索ページで何も入力せずに[I'm Feeling lucky]を押し、
「プレイできるゲーム、再生できる動画、遊べるおもちゃをすべて確認します。」
をクリックすると再び過去のゲームを遊べます。
ほかにも、面白いものが多いのでぜひ!!