ホームページ  >  記事  >  バックエンド開発  >  golang フォーム送信ジャンプ

golang フォーム送信ジャンプ

WBOY
WBOYオリジナル
2023-05-14 17:29:08632ブラウズ

フォームを送信してそこにジャンプすることは、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。