Validate dữ liệu trong Go sử dụng Govalidator
TIL
577
Go
50
golang
49
White

Robin Huy viết ngày 18/05/2018

Trong các ứng dụng cho phép người dùng nhập dữ liệu thì đều cần phải có validate để bảo mật và đảm bảo ứng dụng chạy đúng.

Golang có một số thư viện open source hỗ trợ chúng ta làm việc này một cách nhanh chóng, ví dụ như govalidator.

Cài đặt

Cài govalidator qua package manager hoặc đơn giản là dùng go get:

go get github.com/asaskevich/govalidator

Import vào trong project:

import validator "github.com/asaskevich/govalidator"

Sử dụng

Govalidator cung cấp rất nhiều function hỗ trợ chúng ta validate dữ liệu theo các dạng thông dụng như: URL, Email, Alpha, Numeric Alphanumeric, Regex, ...
Danh sách các hàm hỗ trợ: https://github.com/asaskevich/govalidator#list-of-functions

Ngoài ra Govalidator còn hỗ trợ chúng ta validate struct (kiểm tra tính hợp lệ của các field trong struct) bằng cách sử dụng tag valid. Ví dụ:

type User struct {
    Id       int    `valid:"required"`
    Name     string `valid:"required"`
    Email    string `valid:"email"`
    Password string `valid:"required"`
}

Sau khi khai báo Struct xong, để kiểm tra toàn bộ struct ta gọi hàm ValidateStruct():

user := User{
    Id:       1,
    Name:     "",
    Phone:    "1080",
    Email:    "fake_email",
    Password: "secret",
}

if ok, err := govalidator.ValidateStruct(user); err != nil {
    fmt.Print(err)   // In ra các thông báo lỗi
} else {
    fmt.Print("Struct hợp lệ")
}

Tiptrick

  • Nếu trong Struct có nhiều trường cần require thì ta có thể cấu hình mặc định các field là require:
func init() {
  govalidator.SetFieldsRequiredByDefault(true)
}

Sau đó trường nào không cần require thì thêm tag valid:"-".

  • Để thay đổi message báo lỗi mặc định ta dùng ký tự ~ vào sau kiểu validate (chú ý không có khoảng trắng):
Email    string `valid:"email~Email không hợp lệ"`
  • Nếu một field validate nhiều kiểu dữ liệu thì ngăn cách bằng dấu phẩy, và nếu có custom message thì cần thiết lập riêng message cho từng kiểu dữ liệu:
Name     string `valid:"required~Tên không được để trống,runelength(1|50)~Tên không hợp lệ (từ 1 - 50 ký tự)"`



Nguồn: techmaster.vn

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Robin Huy

9 bài viết.
7 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
9 7
Bài viết được copy lại từ (Link) (hơi cũ nhưng vẫn xài tốt :smile:) (Ảnh) Hiện nay hầu hết các trang web đều đã hỗ trợ SSL (Secure Socket Layer)....
Robin Huy viết 2 tháng trước
9 7
White
4 1
Go (hay thường được gọi là Golang) là một ngôn ngữ lập trình mã nguồn mở được tạo ở Google vào năm 2009 bởi Robert Griesemer, Rob Pike, và Ken Thom...
Robin Huy viết 3 tháng trước
4 1
White
3 2
Phần trước: (Link). (Ảnh) Phần tiếp theo chúng ta sẽ cùng tìm hiểu cách (Link) trong Go. Vòng lặp Trong Go chỉ có 1 kiểu vòng lặp là sử dụng f...
Robin Huy viết 3 tháng trước
3 2
Bài viết liên quan
White
9 2
Makefile thực hiện một số thao tác thường dùng trong Go Khi làm project Go mình thường tạo một file Makefile dạng này: Lưu ý nhớ thay thành tên m...
Huy Trần viết 2 năm trước
9 2
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
9 bài viết.
7 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!