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だったので新しい言語を覚えましたとさ
まだまだ続くよ