以下のリクエストを送って、「サンプル」という文字列を取得したいと思います。
http://localhost:8080/insert?content=サンプル
コード
package main
import (
"log"
"net/http"
)
func main() {
handler := func(w http.ResponseWriter, req *http.Request) {
putList(req.FormValue("content"))
}
http.HandleFunc("/insert", handler)
log.Fatal(http.ListenAndServe(":8080", nil))
}
リクエスト送信
実行結果
サンプル
勉強になったこと
以下ドキュメントのサンプルを参考にしながら書きました。
ざっくり解説します。※本当にざっくり
ListenAndServe
サーバを起動する
ListenAndServeは、TCPネットワークアドレスaddrでリッスンし、受信接続の要求を処理するハンドラでServeを呼び出します。受け付けられた接続は、TCP キープアライブを有効にするように設定されます。
ハンドラは通常nilであり、その場合DefaultServeMuxが使用される。
ListenAndServeは常にnilでないエラーを返します。
HandleFunc
指定したURLパターンのリクエストが来たとき、関数(ハンドラ関数)を呼び出す
HandleFunc は、与えられたパターンに対応するハンドラ関数を DefaultServeMux に登録する。ServeMuxのドキュメントでは、パターンがどのようにマッチングされるかを説明しています。
FormValue
GETパラメータを取得する
FormValue は、クエリの名前付きコンポーネントの最初の値を返します。POST と PUT のボディパラメータは、URL のクエリ文字列の値よりも優先されます。FormValue は、必要に応じて ParseMultipartForm と ParseForm を呼び出し、これらの関数が返すエラーは無視されます。key が存在しない場合、FormValue は空文字列を返します。同じキーの複数の値にアクセスするには、ParseFormを呼び出してから、Request.Formを直接検査します。