Go Web开发笔记
整理Go Web开发的相关知识点。
Go Web开发笔记
1 GoWiki:Go Web应用案例
GoWiki是一个极简的Go
Web应用,使用Go语言内置的html/template
和net/http
等库实现,实现基本的百科网站功能,包含词条创建、编辑、保存和浏览功能。
本节内容总结自官方教程Writing Web Applications。
1.1 项目结构
gowiki
wiki.go
edit.html
view.html
1.2 代码实现
1.3.1 wiki.go
1 | // Writing Web Applications |
1.3.2 edit.html
1 | <h1>Editing {{.Title}}</h1> |
1.3.3 view.html
1 | <h1>{{.Title}}</h1> |
1.3 运行说明
单文件go程序,通过以下命令即可运行:
1 | go run wiki.go |
或编译后再运行:
1 | go build wiki.go |
2 Gin:Go Web框架
从上节可以看到,Go语言的net/http
和html/template
已经足够实现基本的Web应用,但Go自带的路由http.ServerMux
机制简单,只能实现从请求路径(string)到处理函数(handler)的映射,无法根据HTTP的方法(Method),请求头(header)进行路由。Go
Web框架实现了比内置库更丰富的功能,例如Gin。
Gin is a web framework written in Go (Golang). It features a martini-like API with performance that is up to 40 times faster thanks to httprouter. If you need performance and good productivity, you will love Gin.
此外,还有其他Go Web框架,如:gorilla/mux、echo。
3 数据库存储
3.1 SQL
Go语言没有内置数据库驱动。
Go语言定义了database/sql
接口,分离出接口实现与接口调用,使得调用方改换数据库时无需修改代码。
1 | func init() { |
3.2 NoSQL
Go语言的结构体和NoSQL的JSON可以很好地直接对应起来,因此,Go语言中一般可以直接操作NoSQL,不依赖ORM。
1 | func connect(cName string) (*mgo.Session, *mgo.Collection) { |
3.3 beego/orm:Go ORM框架
Beego is used for rapid development of enterprise application in Go, including RESTful APIs, web apps and backend services.
It is inspired by Tornado, Sinatra and Flask. beego has some Go-specific features such as interfaces and struct embedding.
Beego是一个简单易用的企业级Go应用开发框架,其中包含了ORM框架。
Beego的ORM的具体使用方法可以参阅其文档: