beego实践笔记

beego 是流行的Golang开源WEB框架。如果你了解python的Django和PHP的yii2框架,那么beego框架是非常容易入门的。beego是典型的MVC架构,作者在设计时借鉴了已经很成熟的PHP框架思想。

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 www.easeapi.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>