beego框架入门
安装beego和bee
必须先要安装git
1 | go get github.com/astaxie/beego // 安装beego |
常用命令
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:实行对内监控
1 | package main |
-
路由配置文件中只是执行了
init
函数 -
函数的功能是注册路由,映射URL 到 controller
-
三个参数
-
/
表示URL(用户请求的地址),访问的是不带任何参数的URL地址 -
第二个是对应的
Controller
,即请求分发哪个控制器来执行相应的逻辑1
beego.Router("/", &IndexController{}, "*:Index")
-
什么方法执行什么函数,其中
*
表示所有
-
1 | package routers |
配置文件信息
参数配置的文件默认在conf/app.conf
1 | appname = WEB |
路由配置
自定义方法及RESTful规则:
1 | beego.Router("/", &IndexController{}, "*:Index") |
*
表示任意的method
都要执行该函数- 不同的格式使用
;
来分开 - 多个
method
对应同一个funcname,method
之间通过,
来分开 - 使用
httpmethod:funcname
格式来展示
controller逻辑
上面我们知道,路由是需要分发给各个控制器进行处理的,源码如下:
1 | package controllers |
beego.Controller
中拥有很多的方法:
- Init
- Prepare
- Post
- Get
- Delete
- Head
-
渲染模版
this.TplName
就是需要渲染的模板,指定了index.tpl
;去模版目录的Controller/<方法名>.tpl
进行查找1
maincontroller/get.tpl
-
用户设置模版之后,系统自动调用
Render
函数;可以不使用模版,直接输出字符串1
2
3func (this *MainController) Get(){
this.Ctx.WriteString("hello golang!")
}
自己新建的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。