beego

最后更新于:2022-04-02 02:48:26

[TOC] > [官方文档](https://beego.me/docs/quickstart/) > [github]() ## 常用命令 ``` go get github.com/beego/bee //获取beego bee [new/api ] apiproject //新建web 项目或api 项目 bee run //运行项目 bee pack //打包项目 bee generate scaffold user -fields="id:int64,name:string" .. bee generate model [modelname] [-fields="name:type"] bee generate controller [controllerfile] ``` ## init 函数 beego 在运行时候会先加载,涉及到的所有 所有 `.go`文件中的init 可用于初始化 mysql,redis 等操作 ## bee generate 用法 ``` bee generate scaffold user -fields="id:int64,name:string,gender:int" -driver=mysql -conn="root:@tcp(127.0.0.1:3306)/dbname" ``` 自动生成 models,controller,views,需要配置注解路由,如 ``` beego.Include(&controllers.UserControllert) 在控制器中配置 // @router /staticblock/:key [get] ``` ## 对接口进行 `gzip` 压缩 创建基础控制器 并处理 gzip逻辑 ``` package controllers import ( "bytes" "compress/gzip" "github.com/astaxie/beego" ) /** 基础控制器 */ type BaseController struct { beego.Controller } /* 对数据进行压缩 */ func (this *BaseController) HandleGzip(json string) { var b bytes.Buffer w := gzip.NewWriter(&b) //设置压缩级别 //w, e := gzip.NewWriterLevel(&b, 1) defer w.Close() w.Write([]byte(json)) w.Flush() this.Ctx.Output.Header("Content-Type", "text/html; charset=utf8") this.Ctx.Output.Header("Content-Encoding", "gzip") this.Ctx.WriteString(b.String()) } ``` ## linux 后台启动并不输出内容 `nohup ./beepkg > /dev/null 2>&1 &` ## 前置后置操作 ``` var FilterUser = func(ctx *context.Context) { beego.Debug("BeforeRouter") } /** BeforeStatic BeforeRouter BeforeExec AfterExec FinishRouter */ beego.InsertFilter("/*", beego.BeforeRouter, FilterUser) ``` ## healthcheck 健康检查 eg:检查数据库连接是否正常 ``` type DatabaseCheck struct { } //固定名称与格式a func (s *DatabaseCheck) Check()error { _,err :=sql.Open("mysql","root:@tcp/dbname?charset=utf8") if err != nil { return err } return nil } func init() { toolbox.AddHealthCheck("database",&DatabaseCheck{}) } ``` 访问 : http://beego.me:8088/healthcheck
';