Real World HTTP 第2版の2章を読んだ
の続編
Real World HTTP 第2版 ―歴史とコードに学ぶインターネットとウェブ技術
を買ったマスタカです
3章 Go言語によるHTTP/1.0クライアントの実装
を読んだので新しく知ったことをまとめる
Go初めて触ったのでほどんど分からん・・w
・curl
-T 任意のファイルをアップロード
-m タイムアウト
・GolangのAPI
機能が制約されるが簡単に使えるAPI
クッキーも利用できる、少しコントローラブルなAPI
プリミティブな、全機能にアクセスできるAPI
・サンプルコード
panicは強制終了させる
deferはスコープ抜けたら実行される
ioutil.ReadAllはバイト列として読み込み
log.Println(string(body))はバイト列を文字列に変換
package main
import (
"io/ioutil"
"log"
"net/http"
)
func main() {
resp, err := http.Get(("http://localhost:18888"))
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
panic(err)
}
log.Println(string(body))
log.Println("status", resp.Status) //200 OK
log.Println("statusCode", resp.StatusCode) //200
log.Println("Headers:", resp.Header) //map[Content-Length:[31] Content-Type: Date:[Sat, 17 Apr 2021 10:56:14 GMT]]
log.Println("Content-Length", resp.Header.Get("Content-Length"))
}
・Golangのタイムアウト
contextを使う
context.WithTimout
http.NewRequestWithContext
・利用するネットワークのAPI
ヘッダー必要:http.Request
GET/POST/PUT以外:http.Request
クッキー/プロキシが必要:httpの関数を利用
それ以外:http.Clientを利用
この章は、ほぼGolangだったので新しい言語を覚えましたとさ
まだまだ続くよ