context 转成gin_golang轻量级框架Gin入门

本文介绍了Gin,一个Go语言的轻量级Web框架,作为Martini的高性能替代品。通过一个简单的HelloGin示例,阐述了如何安装、创建路由并响应JSON数据。接着,创建了一个项目结构,展示了如何处理不同类型的请求参数,包括URL查询参数、路径参数和POST请求。文中还涉及了文件上传,包括单个文件、多个文件以及Base64编码图片的上传。文章总结时提到,尽管Gin相对较轻,但其强大的MVC功能和中间件如BasicAuth、Logger等,使其成为高性能应用的理想选择。
摘要由CSDN通过智能技术生成

本来自己打算继续学下beanFactory源码的,但是放假了自己也没什么精神,看源码又要求注意力很集中,所以想着看点简单点的内容吧,然后就想到了golang的另一个框架-Gin。假期过后可能就要开启加班生活了,不是很开心,昨天收到老大邮件,我原来项目组基本上解散了,人员分到了不同项目组,而我到了ebay项目组去做微服务(如果不用加班我还是期待的),自己浪了一个月也该收收心了。还是回归正题,gin框架和前面学习的beego框架都是比较流行的框架,但是beego比较传统,模块多功能全,而gin可以看作是一个单独模块的框架,官方介绍说的是:Gin 是一个 Go (Golang) 语言框架。 它是一个拥有更好性能的 martini-like API 框架, 由于 httprouter,速度提高了近 40 倍。 如果你是性能和高效的追求者, 那么你会爱上 Gin。自己感觉gin更像是beego中的controller,主要针对用户的request和response。gin官网,个人感觉文档稍显粗糙,不过胜在支持中文,还是很良心的。

一、安装和开始

要想使用gin必须要下载和安装它,切换到自己的工作空间,执行go命令

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

但是因为网络问题可能会失败,实在不行就直接通过github下载也可以。
安装好之后就可以直接使用了,打开ide创建一个新的项目helloGin,创建main.go

func main()  {
    
    // Engin
    router := gin.Default()
    //router := gin.New()

    router.GET("/hello", func(context *gin.Context) {
        log.Println(">>>> hello gin start <<<)
        context.JSON(200,gin.H{ "code":200,"success":true,
        })
    })// 指定地址和端口号
    router.Run("localhost:9090")

在main函数里面首先通过调用gin.Default()函数返回的是一个Engin指针,Engin代表的是整个框架的一个实例,它包含了多路复用、中间件和配置的设置,其实就是封装了我们需要的内容。一般创建Engin都是使用Default()或者New(),当然Default()本身内部也是调用的New()函数。
接着调用Engin的GET方法,这个方法两个参数,一个是相对路径,一个是多个handler,即针对用户一个请求地址,我可以指定多个handler来处理用户请求。但是一般情况下我们都是一个handler处理一个请求。上面的代码里使用了一个匿名函数处理"/hello"请求。然后以JSON格式的数据响应用户请求,这个方法有两个参数,第一个是状态,第二个是结果。我这里直接指定200,表示成功,或者也可以用http包的常量值http.StatusOK;gin.H其实是一个map的数据结构,然后将其转成json格式输出。
最后是router.Run("localhost:9090"),这个方法是指定服务的主机和端口号,不过一般直接指定端口号就行了。
下面启动项目,并访问"localhost:9090/hello",访问结果如下图所示:

77af164494a1ea43a7fa67a9be07d527.png
图-1.png
二、创建demo

接下来创建项目来学习gin的使用,主要就是controller的使用,即将用户请求和handler进行映射,然后获取不同方式请求参数。构建项目结构如下所示

16f661b46d50a51c3de0613b5c4a5156.png
图-2.png

config主要是配置相关的文件;controller包主要放handler;database包数据库相关代码,因为我这里没有用ORM框架,所以只是数据库连接的代码;main包下只有main.go一个文件;model就是数据模型,即自己定义的一些结构体;static下放置的是静态文件;template包下是html页面。


刚才上面处理"hello"请求使用的是一个匿名函数,下面为非匿名函数来处理,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值