Go Tech

Go net/http JSONをPUTリクエストで送信する

2021年9月6日

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

 

  • この記事を書いた人

次世代ペンギン

長いのでペンギンとお呼びください。システム開発・プログラミングのお仕事をしています。甘味とコーヒーは生命線。日常での学びを記事にしています。

人気の記事

1

キャリアアップのため、または高収入を目指して、しっかりプログラミングを学びたいという人が増えてきましたね。 この記事では現役のエンジニアである私が、実際に仕事で稼げるようになるためのスクール選びで失敗 ...

2

先日の記事では、初心者からフリーランスプログラマーになる難しさと、それでもなんとか稼げるようになるにはどうしたらいいか解説しました。 今回の記事では、稼げるフリーランサーになるために必要な要素を、もう ...

3

気休めだけの甘い言葉は書きません。 最近は多くの企業やサイトで、使い捨てられるプログラマーが欲しいがために、甘い言葉で初心者プログラマを誘い出しています。 この記事では、まずは「現実」をちゃんと理解し ...

4

Vuetifyの v-progress-circular コンポーネントは、数値データや処理状況を環状(円状)のデザインで教えてくれるUIデザインです。 ローディングのスピナー(処理中のマーク)として ...

5

※画像はずとまよの新曲とは一切関係ありません   ずっと真夜中でいいのに。(以下、ずとまよ)の新曲『勘ぐれい』のMVが12月1日に公開されましたね。 MV前に公開されていた原曲を聴き、神曲な ...

6

Vuexのstore(ストア)を使うと、各コンポーネント間で個別にデータのやり取りすることなく、データを一元的に管理できます。Vueでは欠かせない機能といえるでしょう。 state(変数、コンポーネン ...

-Go, Tech
-, ,

© 2021 ペンギンのーと