Validation
Setiap payload request yang masuk harus divalidasi
Kita akan menggunakan validator v.9
Setiap struct di payload request ditambahkan tag validator
package request
import (
"essentials/models"
"strconv"
)
// NewUserRequest : format json request for new user
type NewUserRequest struct {
Username string `json:"username" validate:"required"`
Email string `json:"email" validate:"required"`
Password string `json:"password" validate:"required"`
RePassword string `json:"re_password" validate:"required"`
}
// Transform NewUserRequest to User
func (u *NewUserRequest) Transform() *models.User {
var user models.User
user.Username = u.Username
user.Email = u.Email
user.Password = u.Password
return &user
}
// UserRequest : format json request for update user
type UserRequest struct {
ID uint64 `json:"id" validate:"required"`
IsActive string `json:"is_active"`
}
// Transform UserRequest to User
func (u *UserRequest) Transform(user *models.User) *models.User {
if u.ID == user.ID {
if len(u.IsActive) > 0 {
user.IsActive, _ = strconv.ParseBool(u.IsActive)
}
}
return user
}Pengecekan bisa dilakukan secara generic di helper request libaries/api/request.go
Adakalanya kita ingin validasi dilakukan secara khusus di suatu payload request. Untuk itu kita akan membuat validasi di helper request adalah optional.
Kemudian kita tambahkan validasi khusus di payload request yang membutuhkan validasi khusus.
Selanjutnya setiap call api.Decode() perlu memberitahu apakah akan menggunakan validasi global atau tidak dengan melempar parameter boolean musValidate. Dan mungkin perlu memanggil fungsi Validate khusus
userRequest.Validate()Berikut contoh perubahan di file usecases/user_usecase.go
Dan ini contoh validasi yang dilakukan secara global di helper request pada method Update di file controllers/users.go
Last updated
Was this helpful?