GoのWebAssemblyでネットワークを利用する
Go1.11からサポートされたWebAssemblyにおいて、ネットワークを利用する方法を紹介します。今回はJSONファイルの取得方法です。
注意点
実際のネットワークアクセスはWebブラウザの開発者ツール、ネットワークタブ内で確認できます。ネットワークアクセスを匿名化したり、CORS制限も適用されますので注意してください。
利用法
今回はCORS制限がなく、APIキーも不要なMicrolinkのコンテンツを取得します。 "net/http"
パッケージを使ってネットワークアクセスをします。そして ioutil.ReadAll
を使ってコンテンツを取得します。これはバイト文字列になっていますので、 string
関数を使って文字列化します。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"fmt" | |
"syscall/js" | |
"net/http" | |
"strconv" | |
"io/ioutil" | |
) | |
func main() { | |
resp, err := http.Get("https://api.microlink.io/?url=https://twitter.com/futurism/status/882987478541533189&video&palette") | |
if err != nil { | |
fmt.Println(err) | |
} | |
defer resp.Body.Close() | |
b, err := ioutil.ReadAll(resp.Body) | |
if err != nil { | |
fmt.Println(err) | |
} | |
js.Global().Get("document"). | |
Call("querySelector", "#html"). | |
Set("value", string(b)) | |
} |
これまでのWebAssemblyはDOMやFetch APIなどが使えないのが難点でした。しかしGo版のWebAssemblyによって、その問題はなくなっています。 WebAssemblyの可能性を飛躍的に高めてくれるのではないでしょうか。
コメントは受け付けていません。