首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
Gin框架简介
Gin框架_Router
Gin框架_Model
Gin框架_响应
Gin框架_中间件
Gin框架_数据库
项目实战-项目介绍和项目搭建
项目实战_注册用户信息功能
项目实战-登录功能
项目实战-处理session
项目实战-添加新文章
项目实战-首页设计
项目实战-显示文章详情
项目实战-修改文章
项目实战-删除文章
项目实战-标签功能
项目实战-首页功能扩展
项目实战-文件上传和图片展示功能
项目实战-关于我
当前位置:
首页>>
技术小册>>
Gin框架入门教程
小册名称:Gin框架入门教程
框架一直是敏捷开发中的利器,能让开发者很快的上手并做出应用,甚至有的时候,脱离了框架,一些开发者都不会写程序了。成长总不会一蹴而就,从写出程序获取成就感,再到精通框架,快速构造应用,当这些方面都得心应手的时候,可以尝试改造一些框架,或是自己创造一个。 曾经我以为Python世界里的框架已经够多了,后来发现相比golang简直小巫见大巫。golang提供的net/http库已经很好了,对于http的协议的实现非常好,基于此再造框架,也不会是难事,因此生态中出现了很多框架。既然构造框架的门槛变低了,那么低门槛同样也会带来质量参差不齐的框架。 考察了几个框架,通过其github的活跃度,维护的team,以及生产环境中的使用率。发现Gin还是一个可以学习的轻巧框架。 ![](/uploads/images/20230707/02fb8ea8f09aa3c130cff5044e3edf9f.png) Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,已经发布了1.0版本。具有快速灵活,容错方便等特点。其实对于golang而言,web框架的依赖要远比Python,Java之类的要小。自身的net/http足够简单,性能也非常不错。框架更像是一些常用函数或者工具的集合。借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范。 Gin 包括以下几个主要的部分: 设计精巧的路由/中间件系统; 简单好用的核心上下文Context; 附赠工具集(JSON/XML 响应, 数据绑定与校验等). ![](/uploads/images/20230707/bb938bf0bf536b43be82dadc8f58eba5.png) 在之前的《GoWeb开发实战》中,我们已经讲解过Beego,那么现在我们来学习一下Gin。 Gin 是一个 Golang 写的 web 框架,具有高性能的优点,,基于 httprouter,它提供了类似martini但更好性能(路由性能约快40倍)的API服务。 官方地址:https://github.com/gin-gonic/gin ###一、安装 打开终端,并深入以下命令: go get -u github.com/gin-gonic/gin 安装完成后可以查看一下gopath的src目录下: ![](/uploads/images/20230707/63765e150236197cc4361ff7f5c33ab9.png) 使用的时候要导入包: ``` import "github.com/gin-gonic/gin" ``` ###二、HelloWorld 现在,我们雀雀欲试,可以简单写个HelloWorld了。。 首先创建一个项目:gindemo,然后新建一个go文件(helloworld.go): ``` package main import ( "github.com/gin-gonic/gin" "net/http" ) func main() { router := gin.Default() router.GET("/", func(c *gin.Context) { c.String(http.StatusOK, "Hello World") }) router.Run(":8000") } ``` 使用Gin实现Hello world非常简单,创建一个router(路由),然后执行Run方法即可。 右键运行项目,打开浏览器并访问指定的端口:http://127.0.0.1:8000/ ![](/uploads/images/20230707/2a3c7a308cc4d195b83771b46d711fb3.png) 后台运行结果如下: ![](/uploads/images/20230707/412c7fd4bda62ff8f9037d7a2f7af77f.png) 或者我们通过终端的curl命令,也可以访问,在终端输入: ``` curl http://127.0.0.1:8000/ ``` ![](/uploads/images/20230707/cb4a32b9938ab993d165b8afeed31390.png) 是不是比Java方便多了!下面来仔细分析下上面的代码结构: 1、router:=gin.Default():这是默认的服务器。使用gin的Default方法创建一个路由Handler; 2、然后通过Http方法绑定路由规则和路由函数。不同于net/http库的路由函数,gin进行了封装,把request和response都封装到了gin.Context的上下文环境中。 3、最后启动路由的Run方法监听端口。还可以用http.ListenAndServe(":8080", router),或者自定义Http服务器配置。 要知道一次请求处理的大体流程,只要找到web框架的入口即可。通过我们上面的例子我们可以看到,Run方法十分耀眼,点击去可以看到关键的http.ListenAndServe,这意味着Engine这个结构体,实现了ServeHTTP这个接口。入口就是Engine实现的ServeHTTP接口。 ``` //我是Run方法 func (engine *Engine) Run(addr ...string) (err error) { defer func() { debugPrintError(err) }() address := resolveAddress(addr) debugPrint("Listening and serving HTTP on %s\n", address) err = http.ListenAndServe(address, engine) return } ``` 简单几行代码,就能实现一个web服务。使用gin的Default方法创建一个路由handler。然后通过HTTP方法绑定路由规则和路由函数。不同于net/http库的路由函数,gin进行了封装,把request和response都封装到gin.Context的上下文环境。最后是启动路由的Run方法监听端口。麻雀虽小,五脏俱全。当然,除了GET方法,gin也支持POST,PUT,DELETE,OPTION等常用的restful方法。
下一篇:
Gin框架_Router
该分类下的相关小册推荐:
gin框架入门指南