当前位置: 首页 > news >正文

gin基本使用

中文文档:https://gin-gonic.com/zh-cn/docs/

下载和安装gin模块

 go get -u github.com/gin-gonic/gin

简单接口demo

package mainimport "github.com/gin-gonic/gin"func main() {r := gin.Default()                    // 创建一个默认的路由引擎r.GET("/ping", func(c *gin.Context) { // 路由c.JSON(200, gin.H{ // 返回json数据"message": "hello golang",})})r.Run() // 监听并在 0.0.0.0:8080 上启动服务//r.Run(":8081") // 自定义端口
}

浏览器访问:http://127.0.0.1:8080/ping

返回JSON格式数据

package mainimport ("github.com/gin-gonic/gin""net/http"
)func main() {r := gin.Default()// gin.H 是map[string]interface{}的缩写r.GET("/someJSON", func(c *gin.Context) {// 方式一:自己拼接JSONc.JSON(http.StatusOK, gin.H{"message": "Hello world!"})})r.GET("/moreJSON", func(c *gin.Context) {// 方法二:使用结构体var msg struct {Name    string `json:"user"`Message stringAge     int}msg.Name = "小王子"msg.Message = "Hello world!"msg.Age = 18c.JSON(http.StatusOK, msg)})r.Run(":8080")
}

浏览器访问:http://localhost:8080/someJSON,http://localhost:8080/moreJSON

获取参数

推荐一篇博主写的文章,很全,获取请求参数和绑定参数示例都是全的

获取querystring类型参数

package mainimport ("github.com/gin-gonic/gin""net/http"
)func main() {r := gin.Default()r.GET("/user/search", func(c *gin.Context) {username := c.DefaultQuery("username", "小王子") // 没有username对应参数时默认小王子//username := c.Query("username")address := c.Query("address") // 获取address参数//输出json结果给调用方c.JSON(http.StatusOK, gin.H{"message":  "ok","username": username,"address":  address,})})r.Run(":8080")
}

浏览器访问:http://localhost:8080/user/search?username=萧寂&address=河南省

获取form表单参数

package mainimport ("github.com/gin-gonic/gin""net/http"
)func main() {r := gin.Default()r.POST("/user/search", func(c *gin.Context) {// DefaultPostForm取不到值时会返回指定的默认值//username := c.DefaultPostForm("username", "小王子")username := c.PostForm("username")address := c.PostForm("address")//输出json结果给调用方c.JSON(http.StatusOK, gin.H{"message":  "ok","username": username,"address":  address,})})r.Run(":8080")
}

使用apiFox新建快捷请求,地址栏输入:http://localhost:8080/user/search,请求方式选择post,请求参数选择Body里面的form-data或者x-www-form-urlencoded,新增username字段,值为萧寂,address字段,值为河南省,点击发送请求即可

获取JSON参数

package mainimport ("encoding/json""github.com/gin-gonic/gin""net/http"
)func main() {r := gin.Default()r.POST("/json", func(c *gin.Context) {// 注意:下面为了举例子方便,暂时忽略了错误处理b, _ := c.GetRawData() // 从c.Request.Body读取请求数据// 定义map或结构体var m map[string]interface{}// 反序列化_ = json.Unmarshal(b, &m)c.JSON(http.StatusOK, m)}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 探索Python的Excel世界:openpyxl的魔法之旅
  • 51单片机应用开发---数码管的控制应用
  • ERP进销存管理系统的业务全流程 Axure高保真原型源文件分享
  • springBoot整合easyexcel实现导入、导出功能
  • 递归10小题
  • 一篇文章,讲清SQL的 joins 语法
  • 架构设计——概念和基础
  • RabbitMQ(高阶使用)死信队列
  • 【机器学习】9 ——最大熵模型的直观理解
  • 集群聊天服务器项目【C++】项目介绍和环境搭建
  • ego-planner开源代码之traj_server数据流分析
  • 如何用安卓玩Java版Minecraft,安卓手机安装我的世界Java版游戏的教程
  • 深入浅出通信原理
  • Renesas R7FA8D1BH (Cortex®-M85)控制ISLS29035
  • QT + WebAssembly + Vue环境搭建
  • php的引用
  • @angular/forms 源码解析之双向绑定
  • 【面试系列】之二:关于js原型
  • 4. 路由到控制器 - Laravel从零开始教程
  • Django 博客开发教程 8 - 博客文章详情页
  • Octave 入门
  • Python利用正则抓取网页内容保存到本地
  • SpringCloud集成分布式事务LCN (一)
  • Swift 中的尾递归和蹦床
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 聊一聊前端的监控
  • 跳前端坑前,先看看这个!!
  • 译有关态射的一切
  • 与 ConTeXt MkIV 官方文档的接驳
  • 【干货分享】dos命令大全
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • #QT(一种朴素的计算器实现方法)
  • #前后端分离# 头条发布系统
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (Java入门)抽象类,接口,内部类
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (算法)求1到1亿间的质数或素数
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (一)模式识别——基于SVM的道路分割实验(附资源)
  • (转)编辑寄语:因为爱心,所以美丽
  • .bat批处理(六):替换字符串中匹配的子串
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net core 管理用户机密
  • .NET Core中的去虚
  • .NET 设计模式初探
  • .NetCore 如何动态路由
  • .net通用权限框架B/S (三)--MODEL层(2)
  • .Net中wcf服务生成及调用
  • 。Net下Windows服务程序开发疑惑
  • @Responsebody与@RequestBody
  • @Slf4j idea标红Cannot resolve symbol ‘log‘
  • [ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(十)RCE (远程代码/命令执行漏洞)相关面试题
  • [ai笔记4] 将AI工具场景化,应用于生活和工作