ホームページ >バックエンド開発 >Golang >Web アプリケーションの Golang 学習フォーム検証の実践

Web アプリケーションの Golang 学習フォーム検証の実践

王林
王林オリジナル
2023-06-24 15:07:49937ブラウズ

Web 開発において、フォーム検証は非常に重要な部分です。フォーム検証により、データのセキュリティを効果的に保護し、違法ユーザーによる攻撃や悪意のある操作を防ぐことができます。 Golang では、フォーム検証テクノロジも、特に Web アプリケーションで広く使用されています。この記事では、Golang で Web アプリケーションのフォーム検証を実践する方法を紹介します。

1. フォーム検証の基本原則

Web アプリケーションにおけるフォーム検証の基本原則は、Web ページにデータを送信する前にデータをチェックして検証することです。このデータには、ユーザーが入力したユーザー名、パスワード、電子メール、電話番号など、または検証および処理が必要なその他のフィールドが含まれます。このデータを検証する前に、データ型と検証ルールを定義する必要があります。正規表現は通常、データ検証に使用されます。データ検証に合格した場合は、データを Web サーバーに送信して処理できますが、そうでない場合は、ユーザーに正しいデータを入力し、フォームに再記入するよう求めるメッセージが表示される必要があります。

2. Golang でフォーム検証を実装する方法

Golang では、フォーム検証を実装する方法がたくさんあります。基本的な実装方法は次のとおりです。

  1. 構造の定義

まず、フォームに送信されたデータを保存するための構造を定義する必要があります。構造体のフィールドでは、対応するタイプと検証ルールを定義する必要があります。

type User struct {
    Name     string `form:"name" binding:"required"`
    Password string `form:"password" binding:"required,min=6,max=20"`
    Email    string `form:"email" binding:"required,email"`
    Phone    string `form:"phone" binding:"required,phone"`
}

上記のコードでは、ユーザー名、パスワード、電子メール、電話番号を表す 4 つのフィールドを持つ User 構造体を定義します。構造分野ではGolangのタグ技術を利用しています。たとえば、form:"name" は、Web フォームのこのフィールドの name 属性が name であることを意味し、binding:"required" は、このフィールドが必須であることを意味します。

  1. ルートの定義

次に、ルートを定義し、対応する処理関数をバインドする必要があります。ルートで POST メソッドを使用して、フォームによって送信されたデータを受信します。

router.POST("/register", func(c *gin.Context) {
    var user User
    if err := c.ShouldBind(&user); err != nil {
        c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
        return
    }

    // 数据验证通过,提交到Web服务器处理
    c.JSON(http.StatusOK, gin.H{"success": "注册成功"})
})

上記のコードでは、c.ShouldBind(&user) を使用して、Web フォームで送信されたデータを User 構造にバインドします。バインディングが失敗した場合は、対応するエラー メッセージが返されます。バインドが成功した場合は、データ検証に合格し、データを Web サーバーに送信して処理できることを意味します。

  1. フォーム検証

フォーム検証を実行する前に、Golang に github.com/go-playground/validator/v10 パッケージをインポートする必要があります。 。このパッケージは、フォーム データを検証するための主要なツールです。

import (
    "net/http"

    "github.com/gin-gonic/gin"
    "github.com/go-playground/validator/v10"
)

// 自定义验证函数
var validate *validator.Validate

func init() {
    validate = validator.New()
    validate.RegisterValidation("phone", validatePhone)
}

func validatePhone(fl validator.FieldLevel) bool {
    phone := fl.Field().String()
    if phone == "" {
        return true
    }
    if !regexp.MustCompile(`^1[3456789]d{9}$`).MatchString(phone) {
        return false
    }
    return true
}

上記のコードでは、まずグローバル validate オブジェクトを定義し、次に validatePhone という名前のカスタム検証関数を定義します。この機能は、電話番号がルールに準拠しているかどうかをチェックします。

最後に、ルーティング処理関数で、validate.Struct(user) を使用して User 構造体のデータを検証できます。例:

if err := validate.Struct(user); err != nil {
    c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
    return
}

検証が失敗した場合、対応するエラー メッセージが返されます。検証が成功すると、データを Web サーバーに送信して処理できます。

3. 概要

この記事では、Golang での Web アプリケーションのフォーム検証の実践を紹介します。 Golang では、構造、ルーティング、検証ライブラリなどのテクノロジを使用して、データのフォーム検証を簡単に実装できます。実際の開発では、ユーザーの実際のニーズに応じて構造、検証ルール、ルーティングを定義する必要があります。この記事が初心者の方の参考になれば幸いです。

以上がWeb アプリケーションの Golang 学習フォーム検証の実践の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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