beego(2)简单使用
安装
安装beego核心包
go get -u github.com/beego/beego/v2
安装orm包用于操作数据库,beego的orm包是独立的模块需要单独安装
go get github.com/beego/beego/v2/client/orm
安装mysql驱动, 必须安装mysql驱动,orm包才能工作
go get github.com/go-sql-driver/mysql
安装bee工具包,这个是beego开发的辅助工具,用于快速创建项目,运行项目以及打包项目
go get -u github.com/beego/bee/v2
bee 工具是一个为了协助快速开发 beego 项目而创建的项目,通过 bee 您可以很容易的进行 beego 项目的创建、热编译、开发、测试、和部署。
新建项目
bee new hello
进入项目管理依赖
go mod tidy
运行
bee run
beego项目分析

由此可见这是一个典型的MVC架构的项目
普通项目

conf文件夹:放的是项目有关的配置文件
controllers:存放主要的业务代码
main.go:项目的入口文件
models:存放的是数据库有关内容
routers:存放路由文件,路由作用是根据不同的请求指定不同的控制器
static:存放静态资源,包括图片,html页面,css样式,js文件等
tests:测试文件
views:存放视图有关内容
在controllers 我们可以任意修改其中的值
package controllers
import (
beego "github.com/beego/beego/v2/server/web"
)
type MainController struct {
beego.Controller
}
// Get 方法
func (c *MainController) Get() {
c.Data["Website"] = "hello,world"
c.Data["Email"] = "你好,世界"
// 渲染的文件 可任意修改成index.html
c.TplName = "index.tpl"
}
我们修改成index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>
<p>hello,world</p>
<p>网站Website:{{.Website}}</p>
<p>网站Email:{{.Email}}</p>
</div>
</body>
</html>
效果如下

前后端API 分离项目

控制器逻辑
package controllers
import (
beego "github.com/beego/beego/v2/server/web"
)
// 定义一个控制器结构体
// 我们一般一个模块定义一个控制器
type MainController struct {
// 嵌套beego基础控制器,在go语言中嵌套struct,就类似继承的概念。
// 这里就相当于,继承了beego.Controller的方法和属性。
beego.Controller
}
// 覆盖beego.Controller的Get方法,用于处理RESTful请求中的get请求
// beego.Controller默认支持多种RESTful方法,例如:Post、Put、Delete等等
func (c *MainController) Get() {
// Data是继承过来的属性,是map类型,可以保存任意类型数据,主要用于保存请求响应数据
// 我们可以通过Data将参数,传入视图模板文件。
// 这里设置了两个参数
c.Data["Website"] = "hello"
c.Data["Email"] = "hello@163.com"
// 设置需要渲染的模板文件,框架会去views目录查找这个模板文件
c.TplName = "index.tpl"
}
设置Url路由
package routers
import (
beego "github.com/beego/beego/v2/server/web"
"hello/controllers"
)
// go 包初始化函数,go语言中在导入一个包的时候,如果被导入包存在init函数,会执行init函数
// 因此这里可以使用init函数初始化路由设置
func init() {
// 使用beego.Router函数,注册路由规则。
// 第一个参数是url路由,第二个参数是控制器
// 这里的意思就是将访问 / 这个url的请求,交给controllers.MainController控制器处理。
beego.Router("/", &controllers.MainController{})
}
如果我们增加下面路由设置:
beego.Router("/hello2", &controllers.MainController{})
访问:http://localhost:8080/hello2
和 http://localhost:8080/
得到的结果一样,因为这两个url地址都是由同一个控制器处理。
路由规则说明:
大家可能发现上面的路由注册规则,只是定义了,那个url由那个控制器执行,但是没有说明url请求由控制器的那个函数执行, 一个控制器可以包含多个函数;
beego RESTful路由规则,默认是通过 请求方法 确认由那个控制器方法执行,例如get请求,由Get方法执行,POST请求由Post方法执行。

浙公网安备 33010602011771号