フォームを送信してそこにジャンプすることは、Golang の一般的なタスクです。フォームの送信は、ユーザー登録、検索、データの追加や更新など、さまざまなユースケースで使用できます。この記事では、基本的なフォーム送信者の書き方とジャンプの処理方法について説明します。
フォーム送信の実装
まず、データを送信するための単純な HTML フォームが必要です。以下は、ユーザー名とパスワードを含む単純なフォームです:
<html> <head> <title>登录页面</title> </head> <body> <h1>欢迎来到我的网站</h1> <form action="/login" method="post"> 用户名: <input type="text" name="username"><br> 密码: <input type="password" name="password"><br> <input type="submit" value="提交"> </form> </body> </html>
このフォームは、POST メソッドを使用して送信データを /login パスに送信します。このデータを受信するには、Go サーバー上にハンドラーを設定する必要があります。
サーバー側では、net/http パッケージを使用してこのフォームを処理する必要があります。 http.HandleFunc() 関数を使用して、フォーム送信用のハンドラーを設定できます。ハンドラーのコードは次のとおりです。
func loginHandler(w http.ResponseWriter, r *http.Request) { r.ParseForm() username := r.Form.Get("username") // 获取表单中的用户名 password := r.Form.Get("password") // 获取表单中的密码 // 在这里执行登录逻辑 // ... // 跳转到登录成功后的页面 http.Redirect(w, r, "/success", http.StatusSeeOther) }
ハンドラーは、まず r.ParseForm() メソッドを使用してフォーム データを解析します。次に、r.Form.Get() メソッドを呼び出してユーザー名とパスワードを取得します。次に、ハンドラーでログイン検証ロジックを実行し、必要に応じて別のページにジャンプできます。
ジャンプの処理
上記のハンドラーでは、http.Redirect() メソッドを使用して別のページにジャンプします。このメソッドは、http.ResponseWriter オブジェクト、*http.Request オブジェクト、およびターゲット URL の 3 つのパラメーターを受け取ります。パラメータ http.StatusSeeOther は、ジャンプに 303 ステータス コードを使用するように指示します。
フォームが送信されると、サーバーはブラウザに HTTP 応答を送信します。応答では、ブラウザに別のページにジャンプするように指示する HTTP ヘッダーを設定できます。これは、「Location」HTTP ヘッダーを設定することで実行できます。 Go では、ResponseWriter オブジェクトを使用して HTTP ヘッダーを設定できます。
上記のハンドラーでは、http.Redirect() メソッドでターゲット URL を「/success」に設定します。ログインに成功すると、この URL にジャンプします。この URL を処理するには、サーバーのハンドラーに新しいハンドラーを設定する必要があります。
以下はハンドラーのコードです:
func successHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "恭喜,登录成功!") }
ハンドラーはページにログイン成功メッセージを出力するだけです。実際のアプリケーションでは、データベースへのデータの追加やデータの更新など、他の操作を実行する必要がある場合があります。
ルーティングにゴリラ/マルチプレクサを使用する
HTTP 標準ライブラリを使用してフォーム送信を実装できますが、そのルーティング機能は非常に制限されています。したがって、通常はサードパーティのソフトウェア パッケージを使用してルーティングを管理します。この例では、gorilla/mux を使用します。
gorilla/mux は、柔軟な HTTP ルーティングの作成に使用できる非常に人気のあるサードパーティ ソフトウェア パッケージです。 Gorilla/Mux を使用すると、複数のハンドラーを異なるルートにマップできます。これにより、コードが読みやすく、保守しやすくなります。
gorilla/mux を使用した完全なコードは次のとおりです:
package main import ( "fmt" "net/http" "github.com/gorilla/mux" ) func loginHandler(w http.ResponseWriter, r *http.Request) { r.ParseForm() username := r.Form.Get("username") password := r.Form.Get("password") // 执行登录逻辑 // ... // 跳转到成功页面 http.Redirect(w, r, "/success", http.StatusSeeOther) } func successHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "恭喜,登录成功!") } func main() { r := mux.NewRouter() r.HandleFunc("/login", loginHandler).Methods("POST") r.HandleFunc("/success", successHandler) http.ListenAndServe(":8000", r) }
この例では、gorilla/mux パッケージを使用して新しいルーターを作成します。次に、ルーターに 2 つのハンドラーを追加します。1 つはフォームの送信を処理し、もう 1 つは成功ページを処理します。 router.HandleFunc() メソッドを使用してハンドラーを設定し、HTTP メソッドを指定します。 router.PathPrefix() メソッドを使用して、ハンドラーの URL プレフィックスを設定することもできます。
コードの最後の行では、http.ListenAndServe() 関数を呼び出してサーバーを起動します。この関数は、サーバー アドレスとルーター オブジェクトという 2 つのパラメーターを受け取ります。
概要
この記事では、Go でフォーム送信を実装し、送信成功後のジャンプを処理する方法を学びました。また、gorilla/mux パッケージを使用して HTTP ルーティングを管理する利点についても学びました。これらのテクノロジーを使用すると、美しく機能豊富な Web アプリケーションを作成できます。
以上がgolang フォーム送信ジャンプの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。