Validate dữ liệu trong Go sử dụng Govalidator
TIL
635
Go
39
golang
38
White

Robin Huy viết ngày 03/08/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.
12 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
12 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 7 tháng trước
12 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 8 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 8 tháng trước
3 2
Bài viết liên quan
White
16 0
Crawl dữ liệu Crawl là một vấn đề hay gặp trong quá trình làm software. Ví dụ lấy tin tức, tin giảm giá, vé xem phim... là những dạng của crawl. Mộ...
Thach Le viết hơn 2 năm trước
16 0
White
44 7
Là một người thường xuyên đọc Quora, có một điểm cá nhân tôi thấy rất ấn tượng ở quora chính là khả năng autocomplete với tốc độ ánh sáng. (Ảnh) ...
huydx viết 11 tháng trước
44 7
White
10 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 hơn 2 năm trước
10 2
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


White
{{userFollowed ? 'Following' : 'Follow'}}
9 bài viết.
12 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á!