Go言語でフォームデータを扱う基本!リクエストパラメータの取得方法
生徒
「先生、Go言語でWebフォームから送信されたデータをどうやって取得するんですか?」
先生
「フォームデータは、HTTPリクエストの一部として送られてきます。Goではhttp.Requestのメソッドを使って簡単に取り出すことができます。」
生徒
「HTTPリクエストって難しそうですが、簡単に言うと何ですか?」
先生
「ブラウザがサーバーに送る手紙のようなものです。手紙の中にフォームの内容やURLの情報が入っています。」
生徒
「なるほど、それなら手紙の内容を読むだけでフォームのデータがわかるんですね!」
先生
「その通りです。それでは、実際にGoでフォームデータを取得する方法を見ていきましょう。」
1. フォームデータの取得方法
Goではhttp.RequestのFormValueメソッドを使うと、簡単にフォームの値を取得できます。例えば、HTMLのタグで送信された名前やメールアドレスを取得する場合です。
package main
import (
"fmt"
"net/http"
)
func formHandler(w http.ResponseWriter, r *http.Request) {
name := r.FormValue("name")
email := r.FormValue("email")
fmt.Fprintf(w, "名前: %s, メール: %s", name, email)
}
func main() {
http.HandleFunc("/submit", formHandler)
http.ListenAndServe(":8080", nil)
}
このコードでは、ブラウザから送られてきた
2. GETリクエストとPOSTリクエストの違い
フォームデータは主に2つの方法で送信されます。URLに付加して送るGETリクエストと、本文に含めて送るPOSTリクエストです。
GETリクエストはブラウザのURLにデータが見える形で送られるため、簡単な検索やフィルタリングに使います。POSTリクエストはデータが本文に含まれるため、パスワードなどの機密情報を送るときに便利です。
GoのFormValueは、GETでもPOSTでも自動的に値を取得できるので初心者でも簡単に扱えます。
3. HTMLフォームとの連携例
次のようなHTMLフォームからデータを送る場合、Go側でFormValueを使えば簡単に値を取り出せます。
<form action="/submit" method="post">
<label for="name">名前:</label>
<input type="text" id="name" name="name"><br>
<label for="email">メール:</label>
<input type="email" id="email" name="email"><br>
<input type="submit" value="送信">
</form>
このフォームから送信された値は、先ほどのGoのformHandlerで取得できます。
4. 注意点とポイント
- フォームのタグのname属性が、Go側で取得するキーになります。
- POSTリクエストの場合は
r.ParseForm()を呼ぶと複数の値を安全に取得できます。 - 送信データはユーザーが自由に入力できるため、必ずバリデーションやサニタイズを行うことが重要です。
- Goの
FormValueはシンプルなので、初心者でもフォームデータの取得や表示が簡単に行えます。
このように、Go言語ではフォームデータを扱う基本が簡単に理解できます。GETやPOSTに対応したhttp.Requestを使って、さまざまなWebアプリケーションでデータを取得できるようになります。