beego框架入门
安装beego和bee
必须先要安装git
go get github.com/astaxie/beego // 安装beego
go get github.com/beego/bee // 安装bee工具常用命令
bee中的常用命令,具体解释如下
- 命令必须在
src目录下执行- new :创建
web项目bee new webname - api:创建
API应用bee api apiname;少了static和views目录,多了test模块,用来做单元测试
- new :创建
- 命令必须在
/src/appname下执行- run:
bee run进入框架网页中
- run:
- pack
bee pack用来发布应用的时候进行打包,将项目打包成zip包
- version
动态获取bee、beego和go的版本信息bee version
- generate
用来自动化的生成代码
- migrate
数据库的迁移命令,用来每次应用升级,降级的
SQL管理
项目构成
在建立了mygo之后,整个项目的构成如下:
- 配置文件
- 控制器
- 路由配置
- 静态文件
- 单元测试
- 项目入口文件
入口文件和路由
入口文件的主要功能
main.go中引入了一个包- 自动解析
conf配置文件 - 执行用户的hookfunc
- 是否开启 session
- 是否编译模版
会在启动的时候根据配把 views 目录下的所有模板进行预编译,然后存在map里面
- 是否开启文档功能
- 是否启动管理模块
在8088端口做了一个内部监听,通过端口查询到QPS、CPU、内存等信息
- 监听服务端口
内部调用了ListenAndServe,利用groutine的优势
运行之后监听了两个端口:
- 8080:对外服务
- 8088:实行对内监控
package main
// 入口文件
import (
_ "mygo/routers" // 引入了一个包
"github.com/astaxie/beego"
)
func main() {
beego.Run()
}代码语言:javascript复制package routers
// 路由
import (
"mygo/controllers"
"github.com/astaxie/beego"
)
func init() {
beego.Router("/", &controllers.MainController{})
}配置文件信息
参数配置的文件默认在conf/app.conf
appname = WEB
runmode = dev
// 不同的环境设置不同的端口
[dev]
httpport = 8080
[test]
httpport = 8081
[prod]
httpport = 8082路由配置
自定义方法及RESTful规则:
代码语言:javascript复制beego.Router("/", &IndexController{}, "*:Index")*表示任意的method都要执行该函数- 不同的格式使用
;来分开 - 多个
method对应同一个funcname,method之间通过,来分开 - 使用
httpmethod:funcname格式来展示
controller逻辑
上面我们知道,路由是需要分发给各个控制器进行处理的,源码如下:
代码语言:javascript复制package controllers
import "github.com/astaxie/beego"
type MainController struct{ // 定义结构体
beego.Controller // 内嵌结构体,进行继承
}
// 重写Get方法:接受者
func (this *MainController) Get(){ // data是 map 类型
this.Data["website"] = "beego.me"
this.Data["Email"] = "astaxie&gmail.com"
this.TplName = "index.tpl" // 模版名称指定:index.tpl
}
// 直接输出字符
func (this *MainController) Post(){
this.Ctx.WriterString("hello golang")
}beego.Controller中拥有很多的方法:
- Init
- Prepare
- Post
- Get
- Delete
- Head
自己新建的controller
- 在
controller下面新建test.go
- 进行路由配置
- 页面中访问测试
localhost:8080/test
Model 逻辑
model层一般是用来做数据库操作
bee new中不存在model层bee api中存在model层的应用
如果应用足够简单,不需要model;如果模块开始多了,必须使用model
View 逻辑
在Controller中存在this.TplName="index.tpl",设置显示的模板文件,后缀可以是tpl或者html。


