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:极速上手相关推荐

  1. gin context和官方context_gin 源码阅读(一) -- 启动

    文章首发于同名公众号,欢迎关注~ 因为 gin 的安装教程已经到处都有了,所以这里省略如何安装, 建议直接去 github 官方地址的 README 中浏览安装步骤,顺便了解 gin 框架的功能.ht ...

  2. gin context和官方context_gin 源码阅读(二) 路由和路由组

    " 上一篇讲的是gin 框架的启动原理,今天来讲一下 gin 路由的实现. 1 用法 还是老样子,先从使用方式开始: func main() { r := gin.Default() r.G ...

  3. gin context和官方context_[系列文章] Gin框架 - 安装和路由配置

    概述 看下 Gin 框架的官方介绍: Gin 是一个用 Go (Golang) 编写的 web 框架. 它是一个类似于 martini 但拥有更好性能的 API 框架, 由于 httprouter,速 ...

  4. gin context和官方context_Go语言gin框架从入门到精通(3)

    gin的渲染 1 各种数据格式的响应 json.结构体.XML.YAML类似于java的properties.ProtoBuf 分别对所有数据格式举个列子 func main() {r := gin. ...

  5. gin context和官方context_Go Web 小技巧(一)简化Gin接口代码

    不知道大家在使用 Gin 构建 API 服务时有没有这样的问题: 参数绑定的环节可不可以自动处理? 错误可不可以直接返回,不想写空 return, 漏写就是 bug 本文通过简单地封装,利用 go 的 ...

  6. cmd长ping记录日志和时间_Gin 框架系列 — 路由中间件:日志记录

    概述 首先同步下项目概况: 上篇文章分享了,规划项目目录和参数验证,其中参数验证使用的是 validator.v8 版本,现已更新到 validator.v9 版本,最新代码查看 github 即可. ...

  7. Gin框架从入门到上手学习指南

    推荐一个Golang的学习站:Go中文学习文档 (halfiisland.com) Gin 官方文档:Gin Web Framework (gin-gonic.com) 仓库地址:gin-gonic/ ...

  8. Android 开发 框架系列 百度语音合成

    Android 开发 框架系列 百度语音合成 官方文档:http://ai.baidu.com/docs#/TTS-Android-SDK/6d5d6899 官方百度语音合成控制台:https://c ...

  9. 仿Gin搭建自己的web框架(五)

    继续扩展web框架的功能. context作为某个请求的上下文,必然就需要承担它最基本的功能:在各个中间件和函数之间传递变量.所以我们在context的结构体定义中加入一个Keys的字段,用来放置上下 ...

最新文章

  1. jquery $.proxy使用 Jquery实现ready()的源码
  2. 只安装python_pip 只能安装python库吗
  3. WeihanLi.Npoi 1.10.0 更新日志
  4. [SpringSecurity]基本原理_过滤器加载过程
  5. LeetCode:二叉树的非递归中序遍历
  6. redis 公网 安全_最安全redis公网访问
  7. UAC2.0 Requests处理
  8. 微信小程序-获取微信用户手机号码
  9. 模电摸索日记之《直流稳压电源的组成及主要技术指标》
  10. 工地实名制人脸识别门禁通道闸机如何安装?
  11. scrapy---下载中国大学慕课课程视频及文件
  12. SendCloud从注册到邮件发送使用心得
  13. c#窗体程序未响应问题
  14. 基于android的外卖在线订餐系统app
  15. 如何检测文章被搜索引擎收录(如何让搜索引擎收录网站)
  16. 计算机网络实验六 综合设计实验
  17. 各大高校视频教程评定
  18. 九度OJ-题目1163:素数
  19. win10卸载程序时提示找不到xxx.msi文件
  20. 软件测试黑马程序员课后答案_软件测试课后参考答案

热门文章

  1. Android 4.4.2 动态添加JNI库方法记录 (一 JNI库层)
  2. 利用mm命令编译Android模块
  3. 内存版u-boot制作
  4. 2021云栖大会,打卡IoT最全攻略
  5. 第三届 Apache Flink 极客挑战赛暨 AAIG CUP 报名开始!
  6. 如何迁移 Flink 任务到实时计算
  7. Java 开发者必备手册开放下载!
  8. 游戏行业的人工智能设计(二):路径搜寻和感知
  9. 游戏《蔚蓝山》教我的编程道理
  10. 简述ajax的优缺点