615aa137 by astaxie

添加两个文档

1 parent 0dffb7ec
...@@ -9,16 +9,19 @@ ...@@ -9,16 +9,19 @@
9 - [路由设置](#-4) 9 - [路由设置](#-4)
10 - [静态文件](#-5) 10 - [静态文件](#-5)
11 - [过滤和中间件](#-6) 11 - [过滤和中间件](#-6)
12 - [模板处理](#-7) 12 - [Controller设计](#-7)
13 - [request处理](#-8) 13 - [模板处理](#-8)
14 - [跳转和错误](#-9) 14 - [request处理](#-9)
15 - [response处理](#-10) 15 - [跳转和错误](#-10)
16 - [Sessions](#-11) 16 - [response处理](#-11)
17 - [Cache设置](#-12) 17 - [Sessions](#-12)
18 - [安全的Map](#-13) 18 - [Cache设置](#-13)
19 - [日志处理](#-14) 19 - [安全的Map](#-14)
20 - [第三方应用集成](#-15) 20 - [日志处理](#-15)
21 - [部署编译应用](#-16) 21 - [配置管理](#-16)
22 - [beego参数](#-17)
23 - [第三方应用集成](#-18)
24 - [部署编译应用](#-19)
22 25
23 ## 最小应用 26 ## 最小应用
24 一个最小最简单的应用如下代码所示: 27 一个最小最简单的应用如下代码所示:
...@@ -204,6 +207,94 @@ beego謾ッ謖∬螳壻ケ芽ソサ、荳ュ髣エ莉カ御セ句ヲょョ牙鬪瑚ッシ悟シコ蛻カ霍ウ霓ャ遲 ...@@ -204,6 +207,94 @@ beego謾ッ謖∬螳壻ケ芽ソサ、荳ュ髣エ莉カ御セ句ヲょョ牙鬪瑚ッシ悟シコ蛻カ霍ウ霓ャ遲
204 dosomething() 207 dosomething()
205 }) 208 })
206 209
210 ## Controller设计
211 基于beego的Controller设计,只需要匿名组合`beego.Controller`就可以了,如下所示:
212
213 type xxxController struct {
214 beego.Controller
215 }
216
217 `beego.Controller`实现了接口`beego.ControllerInterface``beego.ControllerInterface`定义了如下函数:
218
219 - Init(ct *Context, cn string)
220
221 这个函数主要初始化了Context、相应的Controller名称,模板名,初始化模板参数的容器Data
222
223 - Prepare()
224
225 这个函数主要是为了用户扩展用的,这个函数会在下面定义的这些Method方法之前执行,用户可以重写这个函数实现类似用户验证之类。
226
227 - Get()
228
229 如果用户请求的HTTP Method是GET, 那么就执行该函数,默认是403,用户继承的子struct中可以实现了该方法以处理Get请求.
230
231 - Post()
232
233 如果用户请求的HTTP Method是POST, 那么就执行该函数,默认是403,用户继承的子struct中可以实现了该方法以处理Post请求.
234
235 - Delete()
236
237 如果用户请求的HTTP Method是DELETE, 那么就执行该函数,默认是403,用户继承的子struct中可以实现了该方法以处理Delete请求.
238
239 - Put()
240
241 如果用户请求的HTTP Method是PUT, 那么就执行该函数,默认是403,用户继承的子struct中可以实现了该方法以处理Put请求.
242
243 - Head()
244
245 如果用户请求的HTTP Method是HEAD, 那么就执行该函数,默认是403,用户继承的子struct中可以实现了该方法以处理Head请求.
246
247 - Patch()
248
249 如果用户请求的HTTP Method是PATCH, 那么就执行该函数,默认是403,用户继承的子struct中可以实现了该方法以处理Patch请求.
250
251 - Options()
252
253 如果用户请求的HTTP Method是OPTIONS, 那么就执行该函数,默认是403,用户继承的子struct中可以实现了该方法以处理Options请求.
254
255 - Finish()
256
257 这个函数实在执行完相应的http Method方法之后执行的,默认是空,用户可以在子Strcut中重写这个函数,执行例如数据库关闭,清理数据之类的工作
258
259 - Render() error
260
261 这个函数主要用来实现渲染模板,如果beego.AutoRender为true的情况下才会执行。
262
263 所以通过子struct的方法重写,用户就可以实现自己的逻辑,接下来我们看一个实际的例子:
264
265 type AddController struct {
266 beego.Controller
267 }
268
269 func (this *AddController) Prepare() {
270
271 }
272
273 func (this *AddController) Get() {
274 this.Data["content"] ="value"
275 this.Layout = "admin/layout.html"
276 this.TplNames = "admin/add.tpl"
277 }
278
279 func (this *AddController) Post() {
280 pkgname := this.GetString("pkgname")
281 content := this.GetString("content")
282 pk := models.GetCruPkg(pkgname)
283 if pk.Id == 0 {
284 var pp models.PkgEntity
285 pp.Pid = 0
286 pp.Pathname = pkgname
287 pp.Intro = pkgname
288 models.InsertPkg(pp)
289 pk = models.GetCruPkg(pkgname)
290 }
291 var at models.Article
292 at.Pkgid = pk.Id
293 at.Content = content
294 models.InsertArticle(at)
295 this.Ctx.Redirect(302, "/admin/index")
296 }
297
207 ## 模板处理 298 ## 模板处理
208 ### 模板目录 299 ### 模板目录
209 beego中默认的模板目录是`views`,用户可以把你的模板文件放到该目录下,beego会自动在该目录下的所有模板文件进行解析并缓存,开发模式下会每次重新解析,不做缓存。当然用户可以通过如下的方式改变模板的目录: 300 beego中默认的模板目录是`views`,用户可以把你的模板文件放到该目录下,beego会自动在该目录下的所有模板文件进行解析并缓存,开发模式下会每次重新解析,不做缓存。当然用户可以通过如下的方式改变模板的目录:
...@@ -219,6 +310,12 @@ beego荳ュ逕ィ謌キ譌髴謇句勘逧ー畑貂イ譟楢セ灘讓。譚ソ恵eego莨夊蜉ィ逧惠隹 ...@@ -219,6 +310,12 @@ beego荳ュ逕ィ謌キ譌髴謇句勘逧ー畑貂イ譟楢セ灘讓。譚ソ恵eego莨夊蜉ィ逧惠隹
219 main.go文件中设置如下: 310 main.go文件中设置如下:
220 311
221 beego.AutoRender = false 312 beego.AutoRender = false
313
314 ### 模板数据
315 模板中的数据是通过在Controller中`this.Data`获取的,所以如果你想在模板中获取内容`{{.Content}}`,那么你需要在Controller中如下设置:
316
317 this.Data["Context"] = "value"
318
222 ### 模板名称 319 ### 模板名称
223 beego采用了Go语言内置的模板引擎,所有模板的语法和Go的一模一样,至于如何写模板文件,详细的请参考[模板教程](https://github.com/astaxie/build-web-application-with-golang/blob/master/ebook/07.4.md) 320 beego采用了Go语言内置的模板引擎,所有模板的语法和Go的一模一样,至于如何写模板文件,详细的请参考[模板教程](https://github.com/astaxie/build-web-application-with-golang/blob/master/ebook/07.4.md)
224 321
...@@ -681,6 +778,120 @@ LevelTrace縲´evelDebug縲´evelInfo縲´evelWarning縲 LevelError縲´evelCritical ...@@ -681,6 +778,120 @@ LevelTrace縲´evelDebug縲´evelInfo縲´evelWarning縲 LevelError縲´evelCritical
681 } 778 }
682 } 779 }
683 780
781 ## 配置管理
782 beego支持解析ini文件, beego默认会解析当前应用下的`conf/app.conf`文件
783
784 通过这个文件你可以初始化很多beego的默认参数
785
786 appname = beepkg
787 httpaddr = "127.0.0.1"
788 httpport = 9090
789 runmode ="dev"
790 autorender = false
791 autorecover = false
792 viewspath = "myview"
793
794 上面这些参数会替换beego默认的一些参数。
795
796 你可以在配置文件中配置应用需要用的一些配置信息,例如下面所示的数据库信息:
797
798 mysqluser = "root"
799 mysqlpass = "rootpass"
800 mysqlurls = "127.0.0.1"
801 mysqldb = "beego"
802
803 那么你就可以通过如下的方式获取设置的配置信息:
804
805 beego.AppConfig.String("mysqluser")
806 beego.AppConfig.String("mysqlpass")
807 beego.AppConfig.String("mysqlurls")
808 beego.AppConfig.String("mysqldb")
809
810 AppConfig支持如下方法
811
812 - Bool(key string) (bool, error)
813 - Int(key string) (int, error)
814 - Int64(key string) (int64, error)
815 - Float(key string) (float64, error)
816 - String(key string) string
817
818 ## beego参数
819 beego中带有很多可配置的参数,我们来一一认识一下它们,这样有利于我们在接下来的beego开发中可以充分的发挥他们的作用:
820
821 * BeeApp
822
823 beego默认启动的一个应用器入口,在应用import beego的时候,在init中已经初始化的。
824
825 * AppConfig
826
827 beego的配置文件解析之后的对象,也是在init的时候初始化的,里面保存有解析`conf/app.conf`下面所有的参数数据
828
829 * HttpAddr
830
831 应用监听地址,默认为空,监听所有的网卡IP
832
833 * HttpPort
834
835 应用监听端口,默认为8080
836
837 * AppName
838
839 应用名称,默认是beego
840
841 * RunMode
842
843 应用的模式,默认是dev,为开发模式,在开发模式下出错会提示友好的出错页面,如前面错误描述中所述。
844
845 * AutoRender
846
847 是否模板自动渲染,默认值为true,对于API类型的应用,应用需要把该选项设置为false,不需要渲染模板。
848
849 * RecoverPanic
850
851 是否异常恢复,默认值为true,即当应用出现异常的情况,通过recover恢复回来,而不会导致应用异常退出。
852
853 * PprofOn
854
855 是否启用pprof,默认是false,当开启之后,用户可以通过如下地址查看相应的goroutine执行情况
856
857 /debug/pprof
858 /debug/pprof/cmdline
859 /debug/pprof/profile
860 /debug/pprof/symbol
861 关于pprof的信息,请参考官方的描述[pprof](http://golang.org/pkg/net/http/pprof/)
862
863 * ViewsPath
864
865 模板路径,默认值是views
866
867 * SessionOn
868
869 session是否开启,默认是false
870
871 * SessionProvider
872
873 session的引擎,默认是memory
874
875 * SessionName
876
877 存在客户端的cookie名称,默认值是beegosessionID
878
879 * SessionGCMaxLifetime
880
881 session过期时间,默认值是3600秒
882
883 * SessionSavePath
884
885 session保存路径,默认是空
886
887 * UseFcgi
888
889 是否启用fastcgi,默认是false
890
891 * MaxMemory
892
893 文件上传默认内存缓存大小,默认值是`1 << 26`(64M)
894
684 ## 第三方应用集成 895 ## 第三方应用集成
685 beego支持第三方应用的集成,用户可以自定义`http.Handler`,用户可以通过如下方式进行注册路由: 896 beego支持第三方应用的集成,用户可以自定义`http.Handler`,用户可以通过如下方式进行注册路由:
686 897
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!