mgo 接收不确定结构体请求参数

作者: 大白杏仁 | 来源:发表于2018-07-11 23:08 被阅读12次

在使用 Python 写 web 后端时,我不必知道 json 请求参数有哪些字段,获取之后再慢慢解析和参数格式的校验;但是在使用 mgo 时我得先定义能和请求参数匹配得结构体,成功绑定之后才能够得到请求参数,虽然不太适应,但这样做能够很清楚地获知请求参数和类型,并减少了自己手动校验的一些步骤。相比于 Python 这种动态类型的语言来说,很能够清楚地反应一个函数的请求与返回。

但是,最近在做一个自定义表单的时候遇到问题:如何在请求参数数量不确定类型不确定的情况下绑定

例如,当我想保存表单内容时,我是这样定义的:

type TList struct {
    Id string `bson:",omitempty"`
    Tag string `json:"tag" bson:"tag"`
    Title string `json:"title" bson:"title"`
    Subtitle string `json:"subtitle" bson:"subtitle"`
}

但是自定义表单各个字段有没有都是不确定的,包括内容,如果不是数组的形式的话我想把它们都绑定,难道全部写死所有的情况?全部写死不可能的,这辈子都不可能的。果然还是用得少,bson.M 就可解决问题

// 改善后
type TList struct {
    Id string `bson:",omitempty"`
    Tag string `json:"tag" bson:"tag"`
    Extra bson.M `bson:",inline"`
}

bson.M 结构体就是 map [string] interface{},是一个 map,可以用它来接受自己定义得任意类型,十分灵活,但貌似这样保存数据的话还是一坨,并且在不清楚 extra 里面有什么变量的情况下还得遍历,总觉得不是很完美的办法,谁有好办法可以告诉我一下

相关文章

  • mgo 接收不确定结构体请求参数

    在使用 Python 写 web 后端时,我不必知道 json 请求参数有哪些字段,获取之后再慢慢解析和参数格式的...

  • Flask框架2

    Flask之Request接收参数 GET请求参数会放到URL?后面 POST请求参数会放在body体里面 上传图...

  • 接收请求参数和自定类型转换器

    一、接收请求参数 接收请求参数,按照参数的类型可以分为两种:1、采用基本类型接收请求参数(包含get/post)接...

  • 服务端接收访问数据

    阅读原文 示例代码index.php 接收GET请求参数 接收POST请求参数 接收Headers自定义参数 问题...

  • 2019-03-26 Tornado大纲

    tornado 请求与响应 请求 接收get传递参数获取请求URL中的参数: self.get_argument...

  • springboot请求参数接收

    get @PathVariable@RequestParam post 对象或map接收 其他 @RequestH...

  • 元组、字典可变参数

    可变参数 需求: 参数数量不确定,能否接收? args元组可变参数 kwargs字典可变参数 传递可变参数

  • Postman接口调试

    HTTP协议 3个部分:请求行,请求头,请求体(类似get的方式没有请求体) 参数:理论上,请求参数可放在请求行,...

  • 2019-05-22 Go语言学习三 方法和接口

    1、方法 Go 没有类。不过你可以为结构体类型定义方法。方法就是一类带特殊的 **接收者** 参数的函数。方法接收...

  • 23 Golang中的接口(三)

    结构体值接收者和指针接收者实现接口的区别 值接收者如果结构体中的方法是值接收者,那么实例化后的结构体值类型和指针类...

网友评论

    本文标题:mgo 接收不确定结构体请求参数

    本文链接:https://www.haomeiwen.com/subject/lpbkpftx.html