Skip to main content

Real World HTTP 第2版の3章を読んだ

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

関連記事:

Pocket