Golang Go语言中Goravel上新:验证表单的三种新姿势,估计你只用过一种

验证用户输入的数据是我们开发中最常见的需求,Goravel 提供三种验证姿势,个个简单好用!

第一种:简单直接式

根据表单内容直接校验:

func (r *PostController) Store(ctx http.Context) {
  validator, err := ctx.Request().Validate(map[string]string{
    "title": "required|max_len:255",
    "body": "required",
  })
}

第二种:自由定义式

自定义验证数据:

validator, err := facades.Validation.Make(map[string]any{
  "name": "Goravel",
}, map[string]string{
  "title": "required|max_len:255",
  "body":  "required",
})

第三种:优雅文艺式

使用命令 go run . artisan make:request StorePostRequest 创建一个「表单请求类」,并定义规则:

package requests

import ( “github.com/goravel/framework/contracts/http” “github.com/goravel/framework/contracts/validation” )

type StorePostRequest struct { Name string form:"name" json:"name" } // 验证授权 func (r *StorePostRequest) Authorize(ctx http.Context) error { return nil } // 定义规则 func (r *StorePostRequest) Rules() map[string]string { return map[string]string{ “title”: “required|max_len:255”, “body”: “required”, } } // 自定义错误信息 func (r *StorePostRequest) Messages() map[string]string { return map[string]string{} } // 自定义字段名 func (r *StorePostRequest) Attributes() map[string]string { return map[string]string{} } // 数据预处理 func (r *StorePostRequest) PrepareForValidation(data validation.Data) {

}

然后校验:

func (r *PostController) Store(ctx http.Context) {
  var storePost requests.StorePostRequest
  errors, err := ctx.Request().ValidateRequest(&storePost)
}

关于 Goravel

Goravel 是一个功能完备、具有良好扩展能力的 Web 应用程序框架。作为一个起始脚手架帮助 Golang 开发者快速构建自己的应用。

框架风格与 Laravel 保持一致,让 PHPer 不用学习新的框架,也可以愉快的玩转 Golang !致敬 Laravel !

Welcome star, PR and issues !


Golang Go语言中Goravel上新:验证表单的三种新姿势,估计你只用过一种

更多关于Golang Go语言中Goravel上新:验证表单的三种新姿势,估计你只用过一种的实战教程也可以访问 https://www.itying.com/category-94-b0.html

3 回复

随便用 gookit/validate 封装加下泛型,比上面好用多了,还不局限任何框架: https://go.dev/play/p/K65rxl2WXj7

更多关于Golang Go语言中Goravel上新:验证表单的三种新姿势,估计你只用过一种的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


那我为什么不直接用 laravel

针对Golang中Goravel框架上新验证表单的三种新姿势,作为IT领域的GO语言专家,以下是我的专业解读:

Goravel是一个功能完备、具有良好扩展能力的Web应用程序框架,为Golang开发者提供了便捷的表单验证方式。以下是三种新的验证姿势:

  1. 简单直接式:根据表单内容直接校验,通过ctx.Request().Validate方法传入一个包含字段名和验证规则的map,即可快速完成验证。
  2. 自由定义式:自定义验证数据,使用facades.Validation.Make方法,可以更加灵活地定义验证逻辑和数据源。
  3. 优雅文艺式:通过创建表单请求类来定义验证规则,这种方式使得代码更加清晰和模块化。使用go run . artisan make:request命令创建请求类,并在其中定义Rules、Messages等方法,实现复杂的验证逻辑。

这三种验证方式各具特色,开发者可以根据实际需求选择最适合的方式。Goravel框架的不断更新和完善,为Golang开发者提供了更加便捷和高效的开发体验。如果你只使用过其中一种或两种验证方式,不妨尝试一下其他方式,以充分利用Goravel框架的强大功能。

回到顶部