beego 是流行的Golang开源WEB框架。如果你了解python的Django和PHP的yii2框架,那么beego框架是非常容易入门的。beego是典型的MVC架构,作者在设计时借鉴了已经很成熟的PHP框架思想。网上很多人批评beego设计过于繁重,不够轻量,未能完全体现Golang的高性能。但不可否认的是,beengo作为高度模块化的web框架,文档齐全,是非常适合新手学习入门的。
beego官网的开发文档写的非常详细,包括MVC,路由,模板等基本上在yii2,Django框架中都有,仅记录一些细节点。
返回紧凑型的JSON
beego通过以下方式返回JSON格式:
this.Data["json"] = &response
this.ServeJSON()
但在runmode = "dev"
状态下,返回的是阅读友好的JSON字符串,想要返回紧凑型的JSON字符串,只需要runmode = "prod"
即可。
model与数据库
使用mysql:
go get github.com/astaxie/beego/orm
go get github.com/go-sql-driver/mysql
模型字段后加orm:"-"
,即可忽略struct中对应的mysql存储。
模板
模板文件推荐统一放在views/layout目录中,使用{{.LayoutContent}}
标记主体内容。
c.Layout = "layout/index_layout.html"
c.TplName = "index.html"
单元测试
单元测试推荐都放在test目录,文件名称以_test.go结尾,测试方法命名示例:func TestDemo(t *testing.T)。
go test demo_test.go -v
apache部署
golang的应用无法像PHP那样直接在apache中部署,需要使用反向代理的方式,在本地指定端口启动golang服务后,在apache中新增设置实际的站点域名,设置反向代理。
1, 开启apache反向代理支持
vim /etc/apache2/httpd.conf
LoadModule proxy_module libexec/apache2/mod_proxy.so
LoadModule proxy_http_module libexec/apache2/mod_proxy_http.so
如果是ubuntu系统,可以直接执行:
sudo a2enmod proxy
sudo a2enmod proxy_http
2,配置站点
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
ServerName kanchuan.com
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://127.0.0.1:1001/
ProxyPassReverse / http://127.0.0.1:1001/
</VirtualHost>
留言板