安装bee工具
安装
go get github.com/beego/bee
验证是否安装成功
cmd
bee
创建beego项目
初始化项目
bee new beegodemo01
生成go mod配置文件
go mod init beegodemo01
运行项目
bee run
项目文件结构
新增一个goods路由
controllers
// controllers/goods.go
package controllers
import (
beego "github.com/beego/beego/v2/server/web"
)
type GoodsController struct {
beego.Controller
}
func (c *GoodsController) Get() {
c.Data["Website"] = "beego.me"
c.Data["Email"] = "astaxie@gmail.com"
c.TplName = "goods.tpl"
}
router
//routers/router.go
package routers
import (
"beegodemo01/controllers"
beego "github.com/beego/beego/v2/server/web"
)
func init() {
beego.Router("/", &controllers.MainController{})
beego.Router("/goods", &controllers.GoodsController{})
}
view
//views/goods.tpl
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<p>goods</p>
</body>
</html>
get传参
// routers/router.go
beego.Router("/article/edit", &controllers.ArticleController{},"get:EditArticle")
// controllers/article.go
func (c *ArticleController) EditArticle() {
// 获取get传值
id := c.GetString("id")
c.Ctx.WriteString("修改新闻--"+id)
}
post 传值
router
// routers/router.go
beego.Router("/user/edit", &controllers.UserController{},"get:EditUser")
beego.Router("/user/doEdit", &controllers.UserController{},"post:DoEditUser")
controllers
//controllers/user.go
func (c *UserController) EditUser() {
c.TplName = "userEdit.html"
}
type User struct {
Username string `form:"username" json:"username"`
Password string `form:"password" json:"password"`
Hobby []string `form:"hobby" json:"h"`
}
func (c *UserController) DoEditUser() {
u := User{}
if err := c.ParseForm(&u); err != nil{
c.Ctx.WriteString("post提交失败")
return
}
fmt.Printf("%#v",u)
c.Ctx.WriteString("解析post数据成功")
}
view
// views/userEdit.html
<form action="/user/doEdit" method="post">
<div>
<span>id</span>
<input type="text" name='id'>
</div>
<div>
<span>用户名</span>
<input type="text" name='username'>
</div>
<div>
<span>密码</span>
<input type="password" name="password">
</div>
<div>
<span>爱好</span>
<input type="checkbox" value=1 id='label1' name='hobby'><label for='lable1'>吃饭</label>
<input type="checkbox" value=2 id='label2' name='hobby'><label for='lable2'>睡觉</label>
<input type="checkbox" value=3 id='label3' name='hobby'><label for='lable3'>打豆豆</label>
</div>
<input type="submit" value='提交'>
</form>
返回json数据
router
//routers/router.go
beego.Router("/user/getUser", &controllers.UserController{},"get:GetUser")
controllers
//controllers/user.go
type User struct {
Username string `form:"username" json:"username"`
Password string `form:"password" json:"password"`
Hobby []string `form:"hobby" json:"h"`
}
func (c *UserController) GetUser() {
u := User{
Username:"张三",
Password:"123456",
Hobby:[]string{"1","2"},
}
c.Data["json"] = u
c.ServeJSON()
}
map 的值实现空接口
c.Data["json"] = map[string]interface{}{"code":500,"msg":"评论出错,请重试"}
c.ServeJSON()
config配置
配置文件设置,获取
// conf/app.conf
mysqluser = "aaa"
admin ="admin","lisi"
// controllers/default.go
mysqluser,err := beego.AppConfig.String("mysqluser")
if err != nil{
return
}
fmt.Print(mysqluser)
admin,err := beego.AppConfig.Strings("admin")
if err != nil{
return
}
fmt.Printf("%v %T",admin,admin)
set get
beego.AppConfig.Set("redisuser","admin666")
redisuser,err := beego.AppConfig.String("redisuser")
if err != nil{
return
}
fmt.Print(redisuser)
cookie
// controllers/default.go
c.Ctx.SetCookie("username","aa")
// controllers/goods.go
username := c.Ctx.GetCookie("username")
c.Data["username"] = username
日志log
beego1.x有beego.ingo,2.0没有
main方法
// main.go
package main
import (
_ "beegodemo01/routers"
beego "github.com/beego/beego/v2/server/web"
"github.com/beego/beego/v2/core/logs"
"fmt"
)
func main() {
logs.Info("hello, world-------11")
logs.SetLogger("file",`{"filename":"logs/test.log"}`)
beego.Run()
}
日志文件
// logs/test.log
文件上传
router
// routers/router.go
beego.Router("/upload", &controllers.UploadController{})
beego.Router("/upload/doUpload", &controllers.UploadController{},"post:DoUpload")
controllers
// controllers/upload.go
import (
beego "github.com/beego/beego/v2/server/web"
"fmt"
"time"
)
func (u *UploadController) DoUpload() {
// 获取上传的文件
f,h,_ := u.GetFile("file")
defer f.Close()
fmt.Println(h.Filename)
// 保存上传的文件
time_unix := time.Now().Unix()
fmt.Println(time_unix)
file_path := fmt.Sprintf("%d_%s",time_cnix,h.Filename)
u.SaveToFile("file","upload/"+file_path)
//u.Ctx.WriteString("上传成功")
u.Data["json"] = map[string]interface{}{"code":200,"msg":"上传成功"}
u.ServeJSON()
}
views
// html
<form action="/upload/doUpload" method="post" enctype="multipart/form-data">
<input type="file" name="file"> <br>
<input type="submit" value="上传">
</form>
//ajax
<form>
<input type="file" id="upload_file"> <br>
<input type="button" value="上传1" id="btn">
</form>
<script>
var btn = document.getElementById("btn");
btn.onclick = function (ev) {
var formdata = new FormData();
console.log($("#upload_file"));
formdata.append("file", $("#upload_file")[0].files[0]);
$.ajax({
url: "/upload/doUpload",
type: "POST",
data: formdata,
contentType: false,
processData: false,
success: function (data) {
alert(data["msg"])
},
fail: function (data) {
}
})
}
</script>
存放的文件夹
// upload
beego 更换版本
在根目录go.mod中设置