Go Tech

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

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

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

-Go, Tech
-, ,