gin context和官方context_Gin框架系列01:极速上手
Gin是什么?
Gin是Go语言编写的web框架,具备中间件、崩溃处理、JSON验证、内置渲染等多种功能。
准备工作
本系列演示所有代码都在Github中,感兴趣的同学可以自行查阅,欢迎大家一起完善。
https://github.com/pingyeaa/golang-examples/tree/master/gin
没有安装配置Go语言环境的同学请先自行安装,这里不再赘述。首先,我们来创建工作目录gin
。
mkdir gin && cd gin
然后用go mod
命令初始化项目,go mod
是Go语言的包管理工具,官方推荐使用,有了它就不再受GOPATH的限制,可以在任何目录初始化项目。
go mod init gin
接下来安装gin
库。
go get -u github.com/gin-gonic/gin
创建演示代码的入口文件main.go
,当前项目结构大致如下。
.
├── go.mod
├── go.sum
└── main.go
编写代码
工作准备就绪之后,来开始今天的代码编写,以经典代码hello word
为例。
实例化一个gin对象
r := gin.Default()
Default方法的主要作用是实例化一个带有日志、故障恢复中间件的引擎。
func Default() *Engine {debugPrintWARNINGDefault()engine := New()engine.Use(Logger(), Recovery())return engine
}
定义请求
定义一个GET请求的路由,参数一是路由地址,也就是在浏览器访问的相对路径,参数二是一个匿名函数,函数内部用于业务逻辑处理。
r.GET("/hello", func(c *gin.Context) {})
我们就在函数内调用JSON方法返回数据。JSON的操作非常简单,参数一是状态码,参数二是JSON的内容。
r.GET("/hello", func(c *gin.Context) {c.JSON(200, gin.H{"msg": "Hello world!",})
})
JSON内容可以通过gin提供的H方法来构建,非常方便。
// H is a shortcut for map[string]interface{}
type H map[string]interface{}
运行
Run方法最终会调用内置http
库的ListenAndServe
方法来监听端口,如果不传参数默认监听80端口,也可以通过参数来变更地址和端口。
r.Run(":8081")
测试
在浏览器访问localhost:8081
,如果看到如下提示即成功。
完整代码
package mainimport "github.com/gin-gonic/gin"func main() {r := gin.Default()r.GET("/ping", func(c *gin.Context) {c.JSON(200, gin.H{"msg": "Hello world!",})})r.Run(":8081")
}
Go语言库代码示例,欢迎star https://github.com/pingyeaa/golang-examples
感谢大家的观看,如果觉得文章对你有所帮助,欢迎关注公众号「平也」,聚焦Go语言与技术原理。
gin context和官方context_Gin框架系列01:极速上手相关推荐
- gin context和官方context_gin 源码阅读(一) -- 启动
文章首发于同名公众号,欢迎关注~ 因为 gin 的安装教程已经到处都有了,所以这里省略如何安装, 建议直接去 github 官方地址的 README 中浏览安装步骤,顺便了解 gin 框架的功能.ht ...
- gin context和官方context_gin 源码阅读(二) 路由和路由组
" 上一篇讲的是gin 框架的启动原理,今天来讲一下 gin 路由的实现. 1 用法 还是老样子,先从使用方式开始: func main() { r := gin.Default() r.G ...
- gin context和官方context_[系列文章] Gin框架 - 安装和路由配置
概述 看下 Gin 框架的官方介绍: Gin 是一个用 Go (Golang) 编写的 web 框架. 它是一个类似于 martini 但拥有更好性能的 API 框架, 由于 httprouter,速 ...
- gin context和官方context_Go语言gin框架从入门到精通(3)
gin的渲染 1 各种数据格式的响应 json.结构体.XML.YAML类似于java的properties.ProtoBuf 分别对所有数据格式举个列子 func main() {r := gin. ...
- gin context和官方context_Go Web 小技巧(一)简化Gin接口代码
不知道大家在使用 Gin 构建 API 服务时有没有这样的问题: 参数绑定的环节可不可以自动处理? 错误可不可以直接返回,不想写空 return, 漏写就是 bug 本文通过简单地封装,利用 go 的 ...
- cmd长ping记录日志和时间_Gin 框架系列 — 路由中间件:日志记录
概述 首先同步下项目概况: 上篇文章分享了,规划项目目录和参数验证,其中参数验证使用的是 validator.v8 版本,现已更新到 validator.v9 版本,最新代码查看 github 即可. ...
- Gin框架从入门到上手学习指南
推荐一个Golang的学习站:Go中文学习文档 (halfiisland.com) Gin 官方文档:Gin Web Framework (gin-gonic.com) 仓库地址:gin-gonic/ ...
- Android 开发 框架系列 百度语音合成
Android 开发 框架系列 百度语音合成 官方文档:http://ai.baidu.com/docs#/TTS-Android-SDK/6d5d6899 官方百度语音合成控制台:https://c ...
- 仿Gin搭建自己的web框架(五)
继续扩展web框架的功能. context作为某个请求的上下文,必然就需要承担它最基本的功能:在各个中间件和函数之间传递变量.所以我们在context的结构体定义中加入一个Keys的字段,用来放置上下 ...
最新文章
- jquery $.proxy使用 Jquery实现ready()的源码
- 只安装python_pip 只能安装python库吗
- WeihanLi.Npoi 1.10.0 更新日志
- [SpringSecurity]基本原理_过滤器加载过程
- LeetCode:二叉树的非递归中序遍历
- redis 公网 安全_最安全redis公网访问
- UAC2.0 Requests处理
- 微信小程序-获取微信用户手机号码
- 模电摸索日记之《直流稳压电源的组成及主要技术指标》
- 工地实名制人脸识别门禁通道闸机如何安装?
- scrapy---下载中国大学慕课课程视频及文件
- SendCloud从注册到邮件发送使用心得
- c#窗体程序未响应问题
- 基于android的外卖在线订餐系统app
- 如何检测文章被搜索引擎收录(如何让搜索引擎收录网站)
- 计算机网络实验六 综合设计实验
- 各大高校视频教程评定
- 九度OJ-题目1163:素数
- win10卸载程序时提示找不到xxx.msi文件
- 软件测试黑马程序员课后答案_软件测试课后参考答案