Revel 参数绑定


本文整理自网络,侵删。

Revel 尽可能让客户端传来的参数转换成Go语言的数据类型变得简单。这种从字符串转换成另外一种类型被称为“数据绑定”。

参数

所有的请求参数被收集到一个单独的 Params 对象中. 包括:

  • URL 路径参数
  • URL 查询参数
  • 表单字段 (Multipart or not)
  • 文件上传

Params对象定义在 (godoc)中:

type Params struct {
    url.Values
    Files map[string][]*multipart.FileHeader
}

嵌入的 url.Values (godoc) 提供了简单值的查询支持, 但是开发者可以更方便的使用Revel的数据绑定支持,提取参数到任意的数据类型。

控制器方法参数绑定

参数可以直接绑定到控制器方法,例如:

func (c AppController) Action(name string, ids []int, user User, img []byte) revel.Result {
    ...
}

在控制器方法执行之前, Revel 通过变量名称绑定器解析参数到指定的数据类型,如果解析参数失败, 参数将被解析到目标数据类型的初始值。

绑定器

使用 Revel 的绑定器绑定一个参数到指定的数据类型 (godoc),它集成了Params对象。例如:

func (c SomeController) Action() revel.Result {
    var ids []int
    c.Params.Bind(&ids, "ids")
    ...
}

支持的数据类型有:

  • Int
  • Bool
  • Point
  • Slice
  • Struct
  • time.Time
  • 文件上传:*os.File, []byte, io.Reader, io.ReadSeeker

数据类型绑定的语法描述如下,详细内容描述也可以参考 源代码。

Booleans

字符串 “true”, “on”, 和 “1” 被绑定到 true,其他的为 false.

Slices

切片绑定有两种语法:有序和无序

有序:

?ids[0]=1
&ids[1]=2
&ids[3]=4

绑定结果为 []int{1, 2, 0, 4}

无序:

?ids[]=1
&ids[]=2
&ids[]=3

绑定结果为 []int{1, 2, 3}

阅读剩余部分

相关阅读 >>

Revel 路由routes

Revel 常见问题

Revel 参数绑定

Revel 测试

Revel 版本控制

Revel 项目结构

Revel 过滤器

Revel 配置文件app.conf

Revel 模块概要

Revel 概念

更多相关阅读请进入《Revel》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...