热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

golang实战使用gin+xorm搭建go语言web框架restgo详解5.5控制器模型绑定

我们采用gin框架内置绑定操作进行模型绑定,常见方法分为俩类,一类是MustBind类,像Bind,BindJSON,BindQuery都是这一类,这一类绑定主要特征是一旦绑定失败则直接返回40

我们采用gin框架内置绑定操作进行模型绑定,常见方法分为俩类,一类是MustBind,Bind,BindJSON,BindQuery都是这一类,这一类绑定主要特征是一旦绑定失败则直接返回400错误;另一类绑定是ShouldBind,像函数ShouldBindShouldBindJSONShouldBindQuery都是这一类,这一类绑定一旦失败,并不会立即响应400错误,而是将错误信息返回给上下文环境,开发者 需要自行处理。常见方法如下,实际上gin框架支持JSON XMLFormQueryFormPostFormMultipart ProtoBuf MsgPack等格式

ctx.ShouldBindJSON(&pageArg)
ctx.BindJSON(&pageArg)
ctx.ShouldBind(&pageArg)
ctx.BindWith(&pageArg,binding.JSON)
ctx.ShouldBindWith(&pageArg,binding.JSON)

下面我们演示数据绑定流程

1、 model文件夹下定义PageArg结构体,注意其中如果需要绑定json数据则必须定义关于jsontag,如果需要绑定form表单类型的数据则需要定义包含formtag

type PageArg struct {
   Kword string `form:"kword"`
   Datefrom time.Time `form:"datefrom" time_format:"2006-01-02 15:04:05"`
   Dateto time.Time   `form:"dateto" time_format:"2006-01-02 15:04:05"`
   Pagesize int       `form:"pagesize" json:"pagesize"`
   Pagefrom int       `form:"pagefrom" json:"pagefrom"`
   Desc string        `form:"desc" json:"desc"`
   Asc  string        `form:"asc" json:"asc"`
}

 

2、 客户端发送json格式数据,注意必须使用"区分,另外JSON格式必须符合规范

//#curl -v  -H "content-type:application/json" -d "{\"pagefrom\":1,\"pagesize\":20}" \http://127.0.0.1/test/query

3、 服务器接收并进行数据处理返回数据

//定制路由映射绑定关系func (ctrl *TestController)Router(router *gin.Engine){   r := router.Group("test").Use(ctrl.before())   r.Any("query",ctrl.query)}//实现绑定func (ctrl *TestController)query(ctx *gin.Context){   var pageArg model.PageArg   ctx.ShouldBindJSON(&pageArg)   restgo.ResultOk(ctx,pageArg)}

系统返回结果如下

* Connected to 127.0.0.1 (127.0.0.1) port 80 (#0)> POST /test/query HTTP/1.1> Host: 127.0.0.1> User-Agent: curl/7.58.0> Accept: */*> content-type:application/json> Content-Length: 28>* upload completely sent off: 28 out of 28 bytes<{"code":200,"data":{"Kword":"","Datefrom":"0001-01-01T00:00:00Z","Dateto":"0001-01-01T00:00:00Z","pagesize":20,"pagefrom":1,"desc":"","asc":""},"msg":""}

源代码获取地址 http://www.imwinlion.com

待提供源代码清单

10.1 restgo后台管理框架

10.天天任务清单小程序

10.工业大数据采集

10.restgo cms 

10.restgo 千人大群

golang实战使用gin+xorm搭建go语言web框架restgo详解1.1 go语言的困境

golang实战使用gin+xorm搭建go语言web框架restgo详解1.2 我要做什么

golang实战使用gin+xorm搭建go语言web框架restgo详解2 框架基本架构

golang实战使用gin+xorm搭建go语言web框架restgo详解3 系统常用配置参数

golang实战使用gin+xorm搭建go语言web框架restgo详解4 路由配置

golang实战使用gin+xorm搭建go语言web框架restgo详解5 控制器C

golang实战使用gin+xorm搭建go语言web框架restgo详解5.2 跳转和重定向

golang实战使用gin+xorm搭建go语言web框架restgo详解5.3 资源控制器

golang实战使用gin+xorm搭建go语言web框架restgo详解5.4 控制器参数绑定

golang实战使用gin+xorm搭建go语言web框架restgo详解5.5 控制器模型绑定

golang实战使用gin+xorm 搭建 go语言web框架restgo搭建详解5.6 控制器参数校验

Golang go语言整合gin+xorm 搭建 web框架restgo搭建详解5.7 控制器数据响应

golang实战使用gin+xorm搭建go语言web框架restgo详解5.9 控制器controller编程

golang实战使用gin+xorm搭建go语言web框架restgo详解6.1 模型M和Orm

golang实战使用gin+xorm搭建go语言web框架restgo详解6.4 推荐编程方式

golang实战使用gin+xorm搭建go语言web框架restgo详解7 视图层V

golang实战使用gin+xorm搭建go语言web框架restgo详解8 关于模板

golang实战使用gin+xorm搭建go语言web框架restgo详解9 session、日志、鉴权

作者简介:胡文林,持续创业者,长期从事技术开源工作。微信号jiepool-winlion


推荐阅读
  • wpf+mvvm代码组织结构及实现方式
    本文介绍了wpf+mvvm代码组织结构的由来和实现方式。作者回顾了自己大学时期接触wpf开发和mvvm模式的经历,认为mvvm模式使得开发更加专注于业务且高效。与此同时,作者指出mvvm模式相较于mvc模式的优势。文章还提到了当没有mvvm时处理数据和UI交互的例子,以及前后端分离和组件化的概念。作者希望能够只关注原始数据结构,将数据交给UI自行改变,从而解放劳动力,避免加班。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • 一、路由首先需要配置路由,就是点击good组件进入goodDetail组件配置路由如下{path:goodDetail,component:goodDetail}同时在good组件中写入如下点击事件,路由中加入 ... [详细]
  • Django + Ansible 主机管理(有源码)
    本文给大家介绍如何利用DjangoAnsible进行Web项目管理。Django介绍一个可以使Web开发工作愉快并且高效的Web开发框架,能够以最小的代价构建和维护高 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 开发笔记:Java是如何读取和写入浏览器Cookies的
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java是如何读取和写入浏览器Cookies的相关的知识,希望对你有一定的参考价值。首先我 ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • React项目中运用React技巧解决实际问题的总结
    本文总结了在React项目中如何运用React技巧解决一些实际问题,包括取消请求和页面卸载的关联,利用useEffect和AbortController等技术实现请求的取消。文章中的代码是简化后的例子,但思想是相通的。 ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • uniapp开发H5解决跨域问题的两种代理方法
    本文介绍了uniapp开发H5解决跨域问题的两种代理方法,分别是在manifest.json文件和vue.config.js文件中设置代理。通过设置代理根域名和配置路径别名,可以实现H5页面的跨域访问。同时还介绍了如何开启内网穿透,让外网的人可以访问到本地调试的H5页面。 ... [详细]
  • 本文介绍了如何使用jQuery和AJAX来实现动态更新两个div的方法。通过调用PHP文件并返回JSON字符串,可以将不同的文本分别插入到两个div中,从而实现页面的动态更新。 ... [详细]
author-avatar
真个田_707
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有