golangでhttpリクエストフォームの値を扱う

golangに慣れている人にとっては当たり前の処理ですが、一応メモとして書き留めておきたいと思います。

  • リクエストフォームの値を取得する
  • curlコマンドで確認する
    • URLにフォームを入力する
    • –formオプションを利用する

リクエストフォームの値を取得する


golangでformの値を取得するには、FormValueメソッドを利用します。具体的には、以下のように取得したいKeyの値を指定します。

http.Request.FormValue(Key)

テスト用ソースコードを作成してみました。以下のソースコード は、ポート番号8080でhttpリクエストを受け付け、Formに入力されたnameとcountryの値を表示します。

package main

import (
    "log"
    "net/http"
    "fmt"
)

func main() {
    //index関数をルートディレクトリに指定
    http.HandleFunc("/", index)
    //サーバー起動
    if err := http.ListenAndServe(":8080", nil); err != nil {
        log.Fatal("ListenAndServe:", nil)
    }
}

func index(writer http.ResponseWriter, r *http.Request) {
  fmt.Println( r.FormValue("name") )
  fmt.Println( r.FormValue("country") )
}

curlコマンドで確認する


curlコマンドで確認する場合は、URLに入力するか、–formオプションを利用します。

先に上記で作成したgoファイルを実行しておきます。

$ go run main.go

URLにフォームを入力する


URLにフォームを入力する場合は、?の後に記述します。複数入力する場合は&を利用します。

$ curl --request GET 'http://localhost:8080/?name=koratta&country=japan'

上記コマンドの出力結果は以下の通りです。

koratta
japan

–formオプションを利用する


–formオプションを利用する場合は、–formオプションの後ろにフォームを入力することで確認できます。

$ curl http://localhost:8080 --form "name=koratta" --form "country=korea"

上記コマンドの出力結果は以下の通りです。

koratta
korea

以上です。