go get github.com/beego/bee #Beego工具Bee
go get github.com/astaxie/beego #Beego框架
bee new projectName
特别注意,工程只能创建在gopath目录下
bee run
启动,默认8080端口
1.函数级别路由如下
beego.Get/Post/Put/Head/Options/Delete/Any(router, beego.FilterFunc)
2.Controller
beego.Router(router, controller)
type OjectController struct {
beego.Controller
}
func (this *ObjectController) Get() {
obs := models.GetAll()
this.Data["json"] = obs
this.ServeJson()
}
beego.Router("/object", &ObjectController{})
3.变量路由、正则路由
url参数可以从ctx.Input.Param读取
## 可以匹配request/value,:id为value值,value可为空。如果要value不为空,id后增加!(感叹号即可);可在括号后增加自定义正则表达式
beego.Router("request/:id", &controllers.RController{})
beego.Router("request/:id([0-9]+)", &controllers.RController{})
## beego特殊匹配,可以匹配request/value1/.../valueN,参数在变量:all中
beego.Router("request/:all", &controllers.RController{})
## beego特殊匹配,可以匹配request/value1/.../valueN.format,value1/.../valueN在变量path中,format在变量:ext中
beego.Router("request/*.*", &controllers.RController{})
## beego特殊匹配,可以匹配request/value1/.../valueN,参数值在变量:splat中
beego.Router("request/*", &controllers.RController{})
## beego特殊匹配,强制:id为int类型,还支持string
beego.Router("request/:id:int", &controllers.RController{})
## beego特殊匹配,支持参数前后还有字符串常量
beego.Router("request/cms_:id([0-9]+).html", &controllers.RController{})
4.映射路由
即在某一路由规则的基础上按照某些条件额外将路由映射到当前Controller的其他方法
# 都好间隔多个HTTP请求类型,冒号后跟随方法名称,分号分隔多个规则
beego.Router("/api/interface", &RestController{}, "post,get:ExtraFuncName;put,delete:ExtraFuncName2;*:ExtraFuncName3")
5.自动化路由
beego自动路由会通过反射根据controller名字、方法名字自动路由,参数也会自动解析
# 假设ObjectController内有login方法,那么/object/login请求会自动被路由至该方法。同时/object/login/param1/param2/param3参数会被自动解析
beego.AutoRouter(&controllers.ObjectController{})
beego.NewNameSpace("/v1").Filter("before", auth)
.Get("/notAllowed", func).Router("/test", func)
接口详解
NewNamespace(prefix string) // 返回ns对象
Cond(cond namespaceCond) // 满足条件才能被ns接纳
Filter(action string, filter FilterFunc) // action支持before、after,指在逻辑开始前、开始后进行过滤
AppName
默认是beego,new应用时指定
AppPath
当前应用路径
AppConfigPath
配置文件所在路径,默认是 AppPath下的conf/app.conf
EnableHttpListen
是否启用HTTP监听,默认是true
HttpAddr
应用监听地址,默认为空,监听所有网卡IP
HttpPort
应用监听端口,默认8080
RnableHttpTLS
是否启用https端口,默认关闭
HttpsPort
应用监听https端口,默认10443
HttpCertFile
开启https之后,证书的路径
HttpKeyFile
keyfile路径
HttpServerTimeOut
http超时时间,默认0,永不超时
RunMode
默认dev,出错会有有好的出错页面
AutoRender
默认true,开启模板自动渲染。对于纯后台应用,应设置为false
RecoverPanic
默认为true。应用异常panic时,会recover,不会导致进程退出
ViewsPath
模板路径,默认views
SessionOn
默认false,是否开启session
SessionProvider
session引擎,默认memory,还支持file、cookie、redis、mysql。。。
SessionName
客户端cookie名称,默认值beegosessionID
SessionGCMaxLifetime
默认3600s超时
SessionSavePath
file就是路径,redis、mysql就是链接地址
SessionHashFunc
sessionID生成函数,默认sha1
SessionHashKey
session hash的key
SessionCookieLifeTime
session默认存在客户端cookie的时间,默认3600s
UseFcgi
是否启用fastcgi,默认false
MaxMemory
文件删除哦人内存缓存大小,默认值 64M
EnableGzip
默认false
DirectoryIndex
是否开启静态目录的列表显示,默认不显示
BeegoServerName
beego server name,默认beego
EnableAdmin
是否开启内存监控模块,默认关闭
AdminHttpAddr
默认监控模块地址,默认localhost
AdminHttpPort
监控程序端口,默认8088
TemplateLeft、TemplateRight
默认{{、}}
ErrorsShow
是否显示错误信息,默认显示
StaticDir
静态路径,默认static
conf/app.conf中可以增加自定义的section与配置
[custom]
test = abc
在代码中
beego.AppConfig.String(“custom::test”)
控制器接口
type ControllerInterface interface {
Init(ct *context.Context, controllerName, actionName string, app interface{})
Prepare()
Get()
Post()
Delete()
Put()
Head()
Patch()
Options()
Finish()
Render() error
XsrfToken() string
CheckXsrfCookie() bool
}
主要适用于form形式的数据处理
* GetString(key string) string
* GetStrings(key string) []string
* GetInt(key string) (int64, error)
* GetBool(key string) (bool, error)
* GetFloat(key string) (float64, error)
RequestBody默认会格式化为form形式,若需要获取requestbody中的json或者xml形式数据,需要配置copyrequestbody = true
// 从form中获取名为key值的文件信息
GetFile(key string) (multipart.File, *multipart.FileHeader, error)
// 将form中名为key值的文件信息存储到tofile中
SaveToFile(fromfile, tofile string) error
默认Session引擎为memory,如果使用第三方依赖的引擎,需要额外引入,因为beego目前设计是微内核
SetSession(name string, value interface{})
GetSession(name string) interface{}
DelSession(name string)
SessionRegenerateID()
DestroySession()
ServeJson()
ServeXml()
ServeJsonp()
ServeFormatted()
TplName string
代表模板文件名称,默认在views目录下
Data map[string] interface{}
代表模板中模板数据
{{.MetaParamName}}
// 条件判断
{{if .condition}}
{{else}}
{{end}}
// 类似js with使用
{{with .object}}
{{.member}}
{{end}}
// range读取切片或者数组
{{range .slice}}
{{.}}
{{end}}
// 先创建并给一个模板变量赋值,然后打印
{{$tplVar := .DataInTpl}}
{{$tplVar}}
用于简易数据处理,不需要再次额外交互后端服务器。go有部分内置,beego在此基础上又添加了一些,用户也可以自行注册
实例:
{{str2html .htmlInStr}}
将htmlInStr的值传给下一个函数作为参数
{{.htmlInStr | htmlquote}}
{{define "tplName"}}
template content
{{end}}
{{template "tplName"}}