Go语言做Web应用开发的框架,哪一个更适合入门

Python016

Go语言做Web应用开发的框架,哪一个更适合入门,第1张

Revel Web开源框架

个高效的Go语言Web开发框架, 其思路完全来自 Java 的 Play Framework。

特点

热编译,简单可选,同步(每个请求都创建自己的goroutine来处理。

Go语言Web框架:beego

一个用Go开发的应用框架,思路来自于tornado,路由设计来源于sinatra。

支持特性

MVC;

REST;

智能路由;

日志调试;

配置管理;

模板自动渲染;

layout设计;

中间件插入逻辑;

方便的JSON/XML服务;

对比于其他语言的程序,Go语言的跨平台能力是真的强,拿.Net和JAVA来说吧,.Net在.Net core出现之前是不能跨平台的,只能在windows上编译运行,即使是.net core出现以后,跨平台的程序也是相当的麻烦。而java虽然一直都可以跨平台,但是运行JAVA程序的机器上也必须要有JAVA程序运行环境JRE。而相对于Go程序,跨平台就简单的多了,只需要在编译指定目标程序运行的架构和环境即可编译出指定操作系统和架构的程序。

以上是指定了go的环境变量后执行的go build命令进行目标程序的构建,这种方式会一直生效的,如果不让他一直生效,可以在构建的时候临时指定环境变量,下面以window的环境为例,来介绍临时指定环境变量的方式构建可以在Linux环境下运行的可执行程序:

可以根据不同的架构和操作系统将其编写为不同的.bat的可执行文件放置在程序的根目录,Linux的和MAC的也一样编写成脚本文件放置在程序的根目录,这样在构建的时候就不用再敲命令了,直接运行脚本就可以了。

Java程序编译打包后为war包或者是java包,必须执行java -jar 命令或者将其放置到tomcat的指定目录下,运行tomcat程序。而Go语言编写的程序最终为可执行的文件(window下编译出的是.exe的可执行文件),只需要将其赋予可执行的权限就可以直接运行了。

构建JAVA程序的镜像需要指定java的基础镜像,否则就需要在镜像中安装java的运行环境了,下面展示的是构建的一个JAVA程序的镜像,构建出来镜像的体积相对比较大

而Go程序制作出的镜像就不需要安装任何的依赖环境,因为他在打包的时候就已经将依赖的包一块打包到一起了

拿着这个镜像就可以到处运行了。

通过对比我们可以发现,如果没有之前的技术和业务的积累,重新开发一个新的项目,使用go去开发无疑是最容易上手的,所以现在很多公司都使用go进行开发,也逐渐将其他语言的项目逐步的用go语言进行改造。其实用什么语言不重要,合适的才重要,开发项目在选择语言的时候也会综合多方面来考虑选择合适的语言和架构,毕竟很多公司都不是搞研究的,都需要项目来赚钱,所以开发的速度、客户的满意度、项目交付的时间才是驱动公司技术的主要因素。

我们个人也应该不断完善自己的技术栈,不应该太依靠某种语言,最重要的还是自己的架构思想和底层架构知识,只有掌握了这些才能够不被 社会 和公司“优化”。

1.先安装Go对应的开源Swagger相关的库

go get github.com/swaggo/swag/cmd/swag

go get github.com/swaggo/gin-swagger

go get github.com/swaggo/files

go get github.com/alecthomas/template

2.验证是否安装成功:swag -v

3.针对接口写入注解

// @Summary 获取多个标签

// @Tags 标签

// @Produce  json

// @Param name query string false "标签名称" maxlength(100)

// @Param state query int false "状态" Enums(0, 1) default(1)

// @Param page query int false "页码"

// @Param page_size query int false "每页数量"

// @Success 200 {object} model.TagSwagger "成功"

// @Failure 400 {object} errcode.Error "请求错误"

// @Failure 500 {object} errcode.Error "内部错误"

// @Router /api/v1/tags [get]

func (t Tag) List(c *gin.Context) {

}

// @Summary 新增标签

// @Tags 标签

// @Produce  json

// @Param name body string true "标签名称" minlength(3) maxlength(100)

// @Param state body int false "状态" Enums(0, 1) default(1)

// @Param created_by body string false "创建者" minlength(3) maxlength(100)

// @Success 200 {object} model.Tag "成功"

// @Failure 400 {object} errcode.Error "请求错误"

// @Failure 500 {object} errcode.Error "内部错误"

// @Router /api/v1/tags [post]

func (t Tag) Create(c *gin.Context) {

}

// @Summary 更新标签

// @Tags 标签

// @Produce  json

// @Param id path int true "标签ID"

// @Param name body string false "标签名称" minlength(3) maxlength(100)

// @Param state body int false "状态 (0为未删除、1为已删除)" Enums(0, 1) default(1)

// @Param modified_by body string true "修改者" minlength(3) maxlength(100)

// @Success 200 {array} model.Tag "成功"

// @Failure 400 {object} errcode.Error "请求错误"

// @Failure 500 {object} errcode.Error "内部错误"

// @Router /api/v1/tags/{id} [put]

func (t Tag) Update(c *gin.Context) {

}

4.针对整个项目进行注解,直接在main方法写入如下注解

//@title 项目名称

//@version 1.0

//@description 这里是描述

func main() {

5.生成执行 swag init

这时会在我项目的docs文件夹下面生成docs.go、swagger.json、swagger.yaml三个文件

6.要在routers中进行默认初始化和注册对应的路由:

r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))

同时要引用 _"blog-service/docs" ,不然会报错

7.查看接口文档 : http://localhost:9090/swagger/index.html

8.ok,完成