golang web开发——gin实战入门

背景

在之前的一系列golang入门小节中,我们也算管中窥豹,大概了解了一些golang,了解了它的基本语法,在之前的章节中,很多大佬留言或者私信我说,我写的都太过简单,充其量就是一个golang的demo,根本达不到企业级开发的要求,所以从这个小节开始的以下大概20个章节,我们都会讲解golang的实战学习,这个过程也是我自己学习或者复习的过程,希望在接下来的章节中,我们都会有所收获


讲真话,其实我也没有在大型项目中,使用golang做过核心接口的开发,充其量也就是边角料工程,那些可以练手的工程中使用golang进行开发,不过跟学习java一样,都是从不会到会的嘛,也都是从模仿中慢慢有了自己对东西的理解,所以我也只有用类比学java的方式去学习golang的web开发,如果有不对的地方,还请golang的大佬指点,拍砖,讲解


golang web开发——gin实战入门


gin的简介

现在golang web开发的框架比较多,有beego的,有gin的,不过听很多业内大佬说,很多还是基于gin的,应该说gin比较轻量,完全是一个web层组件,我觉得可以类比spring mvc,而beego就是一套东西了,可以类比spring framework


golang web开发——gin实战入门

gin的github地址,如果有需要的同学可以去github去看下,从它的star和fork数量来说,也可以侧面看出golang语言的火爆,和gin框架的优秀

https://github.com/gin-gonic/gin


gin版的hello world

1.打开goland新建project

golang web开发——gin实战入门

2.新建一个main.go,从gin官网的Quick start中把代码复制到main函数中就可以了

golang web开发——gin实战入门

3.运行main函数

golang web开发——gin实战入门

从启动日志中可以看出,这边会有一个get请求的映射,并且会在8080端口监听,使用postman测试一下,发现可以访问,到此为止,一个最简单的gin的hello world就搞定了,非常简单

golang web开发——gin实战入门

像使用spring boot的方式使用gin

可能我自己理解的不到位,但是从我的角度看来,gin的企业级使用方式与java中的spring boot有很多相似的地方,您可以按照我如下的步骤来搭建我们第一个gin的企业级系统,先简单的看下我们最后搭建完的系统骨架图,从骨架图中看来,gin也是需要进行分层开发的,否则所有代码都在main函数中进行维护,在日常真实开发过程中,是完全不可行的


golang web开发——gin实战入门


1.和spring boot一样使用main函数作为启动整个系统的入口,这种风格和spring boot非常像,就一个很简单的启动代码,整个项目就开始从这里生根发芽,我们可以看到,这边调用了routers包下的Routers方法

golang web开发——gin实战入门

2.routers这个包下的所有方法,感觉就跟spring boot的controller层一样,定义了方法的映射,和对应逻辑的具体处理类,因为这个是示例代码,接下来的实战课程,我们将搭建一个电影管理系统,不要看这个low,所有的项目都是慢慢从low变牛逼,虽然我也不保证这个项目能够有多牛,但是做实战,总要有一个合适的场景,我们定义了如果用户请求/movie/get/:id这样的restful风格的请求URL的时候,将会交给GetMovieById这个方法处理

golang web开发——gin实战入门

3.GetMovieById这个方法,可以类比我们spting boot的service层,是处理业务的主要核心逻辑区,因为本小节只是一个入门的,并没有包含实际的业务逻辑处理,这边就写了一个静态的默认数据就返回了

golang web开发——gin实战入门


4.在实际项目中,dao层就是我们这个项目中的model层了,虽然目前这个刚刚搭建的demo项目中,并没有什么操作数据库的地方,dao层只定义了一个movie的简单结构,但是接下来的课程中,我们会补充这块操作数据库的代码,到时候在细说其中的思想

golang web开发——gin实战入门

5.启动工程,访问localhost:8080/movie/get/3

golang web开发——gin实战入门


到此为止,一个简单的工程就搭建完成了,虽然非常简单,但是整个项目的骨架已经初具规模了,叶酸是麻雀虽小五脏俱全,接下来的,我们就会按照套路,一步步去完善整个项目


下一个小节将整合swagger,spring boot有swagger,golang同样也能够得到swagger的支持,如果你对本系列的文章感兴趣,麻烦加一个关注,亦或者素质三连,感谢您的支持


分享到:


相關文章: