>  기사  >  백엔드 개발  >  웹 애플리케이션을 위한 Golang 학습 양식 검증 연습

웹 애플리케이션을 위한 Golang 학습 양식 검증 연습

王林
王林원래의
2023-06-24 15:07:49899검색

웹 개발에서 양식 유효성 검사는 매우 중요한 부분입니다. 양식 검증은 데이터 보안을 효과적으로 보호하고 불법 사용자의 공격과 악의적인 작업을 방지할 수 있습니다. Golang에서는 특히 웹 애플리케이션에서 양식 유효성 검사 기술이 널리 사용됩니다. 이 기사에서는 Golang의 웹 애플리케이션에 대한 양식 유효성 검사 방법을 소개합니다.

1. 양식 유효성 검사의 기본 원칙

웹 애플리케이션에서 양식 유효성 검사의 기본 원칙은 웹 페이지에 데이터를 제출하기 전에 데이터를 확인하고 검증하는 것입니다. 이 데이터는 사용자가 입력한 사용자 이름, 비밀번호, 이메일, 전화번호 등이거나 확인 및 처리가 필요한 기타 필드일 수 있습니다. 이 데이터의 유효성을 검사하기 전에 데이터 유형과 유효성 검사 규칙을 정의해야 합니다. 정규식은 일반적으로 데이터 유효성 검사에 사용됩니다. 데이터 확인이 통과되면 처리를 위해 데이터가 웹 서버에 제출될 수 있습니다. 그렇지 않으면 사용자에게 올바른 데이터를 입력하고 양식을 다시 작성하라는 메시지가 표시되어야 합니다.

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개의 필드가 있는 사용자 구조를 정의합니다. 구조 분야에서는 Golang의 태그 기술을 사용합니다. 예를 들어, form: "name"은 웹 양식에서 이 필드의 이름 속성이 이름임을 의미하고 bind: "required"는 이 필드가 필수임을 의미합니다. 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)

    경로 정의

    다음으로 경로를 정의하고 해당 처리 기능을 바인딩해야 합니다. 양식에 의해 제출된 데이터를 수신하려면 경로에서 POST 메소드를 사용하십시오.

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

    위 코드에서는 c.ShouldBind(&user)를 사용하여 웹 양식에 제출된 데이터를 User 구조에 바인딩합니다. 바인딩이 실패하면 해당 오류 메시지가 반환됩니다. 바인딩이 성공하면 데이터 검증이 통과되었으며 처리를 위해 데이터를 웹 서버에 제출할 수 있음을 의미합니다.

      🎜양식 유효성 검사🎜🎜🎜양식 유효성 검사를 수행하기 전에 Golang에서 github.com/go-playground/validator/v10 패키지를 가져와야 합니다. 이 패키지는 양식 데이터의 유효성을 검사하는 기본 도구입니다. 🎜rrreee🎜위 코드에서는 먼저 전역 validate 객체를 정의한 다음, verifyPhone이라는 사용자 정의 유효성 검사 함수를 정의합니다. 전화번호가 규정을 준수하는지 확인하는 기능입니다. 🎜🎜마지막으로 라우팅 처리 기능에서 validate.Struct(user)를 사용하여 User 구조의 데이터를 확인할 수 있습니다. 예: 🎜rrreee🎜확인에 실패하면 해당 오류 메시지가 반환됩니다. 확인이 성공하면 처리를 위해 데이터를 웹 서버에 제출할 수 있습니다. 🎜🎜3. 요약🎜🎜이 글에서는 Golang의 웹 애플리케이션의 양식 유효성 검사 방법을 소개합니다. Golang에서는 구조, 라우팅, 유효성 검사 라이브러리와 같은 기술을 사용하여 데이터의 형식 유효성 검사를 쉽게 구현할 수 있습니다. 실제 개발에서는 사용자의 실제 요구에 따라 구조, 유효성 검사 규칙 및 라우팅을 정의해야 합니다. 이 글이 초보자들에게 참고가 되기를 바랍니다. 🎜

위 내용은 웹 애플리케이션을 위한 Golang 학습 양식 검증 연습의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.