GoでHTTPリスエストを送るには様々なパッケージが利用できますが、標準ライブラリのnet/httpで十分でしょう。
今回はnet/httpの基本的な使い方として、HTTPリクエスト(特にPUTやDELETE)を送信する方法を確認しています。
結論
PUTリクエストでJSONデータを送信するには、http.NetRequest関数で"PUT"を指定してRequestを取得します。DELETEメソッドなら"DELETE"を指定する。
client := &http.Client{
CheckRedirect: redirectPolicyFunc,
}
r, err := http.NewRequest(
"PUT",
"http://example.com/",
bytes.NewBuffer(jsonData))
...
res, err := client.Do(r)
Content-Type ヘッダーを指定するにはRequest.Headerに直接Set()で指定できます。
r.Header.Set("Content-Type", "application/json")
実行環境
go version go1.16.4 linux/amd64
PUTやDELETEリクエストを送る
GETやPOSTはドキュメントに書いてあるようにすればOK。かんたんにResponseが得られます。
resp, err := http.Get("http://example.com/")
...
resp, err := http.Post("http://example.com/upload", "image/jpeg", &buf)
PUTメソッドやDELETEメソッドは、http.PUTやhttp.Deleteみたいな関数が用意されているわけではありません。
そこで、個別にNetRequest()で "PUT" を指定することでRequestを作成します。
r, err := http.NewRequest(
"PUT",
"http://example.com/",
bytes.NewBuffer(jsonData))
第1引数…リクエストタイプ("GET", "POST", "PUT", "DELETE"など)
第2引数…URL(エンドポイント)
第3引数…データ(ある場合)
今回参考にしたページ・資料
Goのおすすめのフレームワークはnet/http | フューチャー技術ブログ
http package - net/http - pkg.go.dev