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。