プログラミングで基礎的な内容を調べようとネットで検索してみると、

引っかかるのは〇〇のライブラリを使ってみたといったものばかり。


開発をする上で、ライブラリの利用は確かに最短で良いけど、

商売をしていく上での革命的な決定打ってそういう表層の情報ではないじゃん。


知りたいのはもっとピュアな箇所だよ

ということで、


今回はGo言語のhttpパッケージにあるGet関数で、

URLを指定して、HTMLを文字列として取得するまでを書いてみた。


自分用のメモとして




で、コードは下記の通り


package main

import (
	"bytes"
	"fmt"
	"io/ioutil"
	"net/http"
)

func main() {
	url := ""
	res, err := http.Get(url)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()
	body, err := ioutil.ReadAll(res.Body)
	if err != nil {
		panic(err)
	}
	buf := bytes.NewBuffer(body)
	html := buf.String()
	fmt.Println(html)
}

最初にHTMLを取得したいURLを決め、

http.Get(url)で対象URLにGETを送り、結果を受け取りres変数に突っ込んでおく。


結果にはヘッダやステータスコードも入っているので、

res.BodyでHTMLの箇所だけioutil.ReadAllで読み込む。


一行上のdefer res.Body.Close()のdeferはmain関数が最後まで実行された後にdeferの後のコードを実行するという指示で、

今回は文字列のHTMLを取得した後にレスポンスの処理を終了する


読み込みの結果をbody変数に入れておくけど、

この時の結果はbyte型なので、byteを文字列に変換しなければならない。


byteから文字列へは、

一旦データをバッファに入れておかなければならないので、

buf := bytes.NewBuffer(body)でbyteとしてのHTMLをバッファに入れておき、

html := buf.String()でバッファ内でbyte型のデータを文字列のデータに変換するという処理を行う。


この結果を表示してみると、

無事、このサイトのトップページのHTMLが文字列型で表示された。