beego学习笔记

bee介绍

在这里插入图片描述
官网地址:https://beego.gocn.vip/beego/zh/developing/web/

安装bee

1、创建一个新项目
2、右键项目名,创建go.mod
3、项目命令行中输入 go get -u github.com/beego/bee/v2@master 下载工具 (如果拉不下来就配置goproxy,有些电脑必须配了才能拉)
4、在本机bee目录下,cmd执行go build -o bee.exe (如果执行报错,就找其他人要一个bee.exe)
我的目录在“D:\environment\GoWorks\pkg\mod\github.com\beego\bee\v2@v2.0.4”
在这里插入图片描述

5、将生成的bee.exe文件剪切到bin 目录下
在这里插入图片描述

6、在环境变量path里设置这个路径
在这里插入图片描述
7、在cmd中执行bee version查看是否安装成功

创建项目

分为web应用和api应用

web

命令行执行bee new <项目名> 就会生成web 项目
在这里插入图片描述
cd到项目路径下
使用go mod tidy整理项目中的依赖
使用 go mod download下载项目中的依赖
运行main.go,或者命令行 bee run / go run进行运行
浏览器访问在这里插入图片描述

api

使用 bee api <项目名创建代码>
cd到项目路径下
使用go mod tidy整理项目中的依赖
使用 go mod download下载项目中的依赖
运行main.go,或者命令行 bee run / go run进行运行
在这里插入图片描述

由于没有配置静态页面 返回如上界面
运行时bee run -gendoc=true -downdoc=true下载Swagger,仅第一次会下载。
在这里插入图片描述
在这里插入图片描述

路由

在controllers目录下,创建路由地址

package controllers

import "github.com/beego/beego/v2/server/web"

type UserController struct { //创建User控制器,可以理解为一级目录,访问的时候是/user
	web.Controller
}

// 创建2级目录,User类下对应的方法,方法不能有参数,不能有返回值,方法名必须大写
func (u *UserController) Hello() { //localhost:8080/user/hello
	u.Ctx.WriteString("user/hello")
}
func (u *UserController) Login() { //localhost:8080/user/login
	u.Ctx.WriteString("user/login")
}

在router下注册路由

package routers

import (
	beego "github.com/beego/beego/v2/server/web"
	"web-demo/controllers"
)

func init() {
	//自动注册路由,将contros目录下的UserController注册上来
	beego.AutoRouter(&controllers.UserController{})

	//首页的路由
	beego.Router("/", &controllers.MainController{})
}

手动路由

beego.Get("/", func(ctx *context.Context) {
		
	})

restful风格路由

在这里插入图片描述

处理表单请求

首先在views下创建一个前端页面用来提交表单。
在这里插入图片描述
然后在controller中写2个方法
在这里插入图片描述
由于是post请求,需要在router中设置post路由(我试着不用post路由,用自动注册的,目前页没问题)

beego.Router("/user/login2", &controllers.UserController{}, "post:Login2")

错误处理

重定向,如果输入的username不是admin就重定向到登录页面。如果重定向,重定向后面的内容不会执行。
在这里插入图片描述
或者在router,写一个原生的错误处理,记得在views下添加错误页面。
在这里插入图片描述
第三种是创建一个errorController
根据官网提供的代码,创建一个error.go,代码复制上去

package controllers

import (
	"github.com/beego/beego/v2/server/web"
)

type ErrorController struct {
	web.Controller
}

func (c *ErrorController) Error404() {
	c.Data["content"] = "page not found"
	c.TplName = "404.tpl"
}

func (c *ErrorController) Error501() {
	c.Data["content"] = "server error"
	c.TplName = "501.tpl"
}


func (c *ErrorController) ErrorDb() {
	c.Data["content"] = "database is now down"
	c.TplName = "dberror.tpl"
}

在router中注册路由

beego.ErrorController(&controllers.ErrorController{})

原生错误路由与errorController同时存在的话,优先执行errorController

Admin管理后台

默认是关闭的,需要手动配置开启,
conf中配置
EnableAdmin = true
AdminAddr = “localhost”
AdminPort = 8088
打开浏览器,输入 URL:http://localhost:8088/,你会看到一句欢迎词:Welcome to Admin Dashboard
请求统计信息
访问统计的 URL 地址 http://localhost:8088/qps
定时任务
用户需要在应用中添加了 定时任务,才能执行相应的任务检查和手工触发任务。
检查任务状态 URL:http://localhost:8088/task
手工执行任务 URL:http://localhost:8088/task?taskname=任务名
配置信息
应用开发完毕之后,我们可能需要知道在运行的进程到底是怎么样的配置,beego 的监控模块提供了这一功能。

显示所有的配置信息: http://localhost:8088/listconf?command=conf
显示所有的路由配置信息: http://localhost:8088/listconf?command=router
显示所有的过滤设置信息: http://localhost:8088/listconf?command=filter

Session 、Cookie

在app.conf中开启session
sessionon = true
写一个设置session的方法,并且前端可以获取到方法中的计数器num

func (this *UserController) SessionUser() {

	//设置一个cookie
	this.Ctx.SetCookie("name", "web cookie", 10)
	//设置一个加密cookie
	//this.Ctx.SetSecureCookie("my-secret", "name", "web cookie")

	v := this.GetSession("asta")
	if v == nil {
		this.SetSession("asta", int(1))
		this.Data["num"] = 0
	} else {
		this.SetSession("asta", v.(int)+1)
		this.Data["num"] = v.(int)
	}
	this.TplName = "index.tpl"
}

定时任务

在这里插入图片描述

ORM

在models里创建orm文件,并写init方法
在main里导入orm的init

package models

import (
	"github.com/beego/beego/v2/client/orm"
	// don't forget this
	_ "github.com/go-sql-driver/mysql"
)

func init() {

	//开启日志
	orm.Debug = true
	//同步结构体到表中
	orm.RegisterModel(new(User))

	//连接数据库
	orm.RegisterDataBase("default", "mysql", "root:root@tcp(127.0.0.1:3306)/beego?charset=utf8")

	orm.RunSyncdb("default", false, true)

}

在models里写对象与数据库映射

package models

import (
	"fmt"
	"github.com/beego/beego/v2/client/orm"
	"time"
)

type User struct {
	//创建字段与列进行映射
	Id         int       `orm:"column(id);auto"`
	Name       string    `orm:"column(name);"`
	Email      string    `orm:"column(email);"`
	Create     time.Time `orm:"column(create_time);auto_now_add;type(datetime)"`
	UpdateTime time.Time `orm:"column(update_time);auto_now;type(datetime)"`
}

func UserInsert(user *User) int64 {
	//创建orm对象
	o := orm.NewOrm()
	//插入user
	n, _ := o.Insert(user)
	//o.Delete()
	//o.Update()
	//o.Read()
	if n > 0 {
		fmt.Println("数据插入成功")
		return n
	}
	return 0
}

在controller里写方法

package controllers

import (
	"github.com/beego/beego/v2/server/web"
	"web-demo/models"
)

type UserController struct {
	web.Controller
}

func (u *UserController) Name() {
	//生成结构体指针对象
	user := new(models.User)
	user.Name = "zhangsan"
	user.Email = "1@qq.com"

	//业务
	n := models.UserInsert(user)
	if n == 0 {
		u.Ctx.WriteString("插入失败")
	} else {
		u.Ctx.WriteString("插入成功")
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tigeraowu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值