推荐
关注
TOP
Message

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项目分析

image.png

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

普通项目

image.png
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>

效果如下
image.png

前后端API 分离项目

image.png

控制器逻辑

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方法执行。

详细可看:
https://www.tizi365.com/archives/104.html

posted @ 2022-11-03 10:50  始識  阅读(417)  评论(0)    收藏  举报