Go Web基础--Beego框架
来源:互联网 发布:淘宝怎么登录阿里旺旺 编辑:程序博客网 时间:2024/05/29 11:40
Beego
安装
go get github.com/beego/bee #Beego工具Beego get github.com/astaxie/beego #Beego框架
创建应用
bee new projectName
特别注意,工程只能创建在gopath目录下
启动应用
bee run
启动,默认8080端口
beego基础路由
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类型,还支持stringbeego.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.confEnableHttpListen
是否启用HTTP监听,默认是trueHttpAddr
应用监听地址,默认为空,监听所有网卡IPHttpPort
应用监听端口,默认8080RnableHttpTLS
是否启用https端口,默认关闭HttpsPort
应用监听https端口,默认10443HttpCertFile
开启https之后,证书的路径HttpKeyFile
keyfile路径HttpServerTimeOut
http超时时间,默认0,永不超时RunMode
默认dev,出错会有有好的出错页面AutoRender
默认true,开启模板自动渲染。对于纯后台应用,应设置为falseRecoverPanic
默认为true。应用异常panic时,会recover,不会导致进程退出ViewsPath
模板路径,默认viewsSessionOn
默认false,是否开启sessionSessionProvider
session引擎,默认memory,还支持file、cookie、redis、mysql。。。SessionName
客户端cookie名称,默认值beegosessionIDSessionGCMaxLifetime
默认3600s超时SessionSavePath
file就是路径,redis、mysql就是链接地址SessionHashFunc
sessionID生成函数,默认sha1SessionHashKey
session hash的keySessionCookieLifeTime
session默认存在客户端cookie的时间,默认3600sUseFcgi
是否启用fastcgi,默认falseMaxMemory
文件删除哦人内存缓存大小,默认值 64MEnableGzip
默认falseDirectoryIndex
是否开启静态目录的列表显示,默认不显示BeegoServerName
beego server name,默认beegoEnableAdmin
是否开启内存监控模块,默认关闭AdminHttpAddr
默认监控模块地址,默认localhostAdminHttpPort
监控程序端口,默认8088TemplateLeft、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}
控制器执行逻辑
- 匹配路由
- 执行 func init (不建议复写)
- 执行 func Prepare,执行用户自定义初始化
- 执行Action函数(Get、Post等,未实现默认返回403 )
- 执行 func Render,渲染模板(受Render开关控制)
- 执行 func Finish,执行用户自定义结束逻辑
- 结束
请求数据处理
主要适用于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
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控制
默认Session引擎为memory,如果使用第三方依赖的引擎,需要额外引入,因为beego目前设计是微内核
SetSession(name string, value interface{})GetSession(name string) interface{}DelSession(name string)SessionRegenerateID()DestroySession()
数据输出
ServeJson()ServeXml()ServeJsonp()ServeFormatted()
beego模板
beego.Controller 中的成员
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"}}
- Go Web基础--Beego框架
- Go Web基础--beego ORM使用
- GO beego框架研究
- go语言web框架 beego初步使用笔记
- Go语言及Web框架Beego环境搭建
- (beego)搭建GO语言 WEB框架 BEEGO 的WINDOWS环境过程
- [bigdata-087] ubuntu 16.04+linux+go 安装 编译 开发 beego+fasthttp web框架
- Go语言beego框架环境搭建
- golang web框架 配置文件读取 借鉴 beego
- Golang Web 框架 Beego 快速入门
- Golang Web 框架 Beego 创建项目
- Golang Web 框架 Beego 路由设置
- Golang Web 框架 Beego controller 运行机制
- Golang Web 框架 Beego model 逻辑
- Golang Web 框架 Beego view 渲染
- Golang Web 框架 Beego 静态文件处理
- beego 0.9.0 版本发布,Go 应用框架
- go语言之beego框架orm的使用
- 理解正则化项l1和l2的区别
- 从损失函数的角度详解常见机器学习算法
- HDOJ 1230 火星A+B
- C Primer Plus(第6版)第九章 初学小结
- Linux存储设备的管理
- Go Web基础--Beego框架
- callWithArguments
- 九大内置对象
- Spark学习之(二)Spark 集群环境搭建(standalone)
- hdoj 1016 Prime Ring Problem
- 正则表达式总结
- 简答
- 详细:java异或运算符
- 习题4(2)