<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] # 執行邏輯 ![](https://box.kancloud.cn/951cc57e9d444b866e3ebcfe00257832_1026x546.png) # beego里面的方法 `beego.Controller`實現了接口`beego.ControllerInterface`,`beego.ControllerInterface`定義了如下函數: * Init(ct \*context.Context, childName string, app interface{}) 這個函數主要初始化了 Context、相應的 Controller 名稱,模板名,初始化模板參數的容器 Data,app 即為當前執行的 Controller 的 reflecttype,這個 app 可以用來執行子類的方法。 * Prepare() 這個函數主要是為了用戶擴展用的,這個函數會在下面定義的這些 Method 方法之前執行,用戶可以重寫這個函數實現類似用戶驗證之類。 * Get() 如果用戶請求的 HTTP Method 是 GET,那么就執行該函數,默認是 405,用戶繼承的子 struct 中可以實現了該方法以處理 Get 請求。 * Post() 如果用戶請求的 HTTP Method 是 POST,那么就執行該函數,默認是 405,用戶繼承的子 struct 中可以實現了該方法以處理 Post 請求。 * Delete() 如果用戶請求的 HTTP Method 是 DELETE,那么就執行該函數,默認是 405,用戶繼承的子 struct 中可以實現了該方法以處理 Delete 請求。 * Put() 如果用戶請求的 HTTP Method 是 PUT,那么就執行該函數,默認是 405,用戶繼承的子 struct 中可以實現了該方法以處理 Put 請求. * Head() 如果用戶請求的 HTTP Method 是 HEAD,那么就執行該函數,默認是 405,用戶繼承的子 struct 中可以實現了該方法以處理 Head 請求。 * Patch() 如果用戶請求的 HTTP Method 是 PATCH,那么就執行該函數,默認是 405,用戶繼承的子 struct 中可以實現了該方法以處理 Patch 請求. * Options() 如果用戶請求的HTTP Method是OPTIONS,那么就執行該函數,默認是 405,用戶繼承的子 struct 中可以實現了該方法以處理 Options 請求。 * Finish() 這個函數是在執行完相應的 HTTP Method 方法之后執行的,默認是空,用戶可以在子 struct 中重寫這個函數,執行例如數據庫關閉,清理數據之類的工作。 * Render() error 這個函數主要用來實現渲染模板,如果 beego.AutoRender 為 true 的情況下才會 # 前置方法 **注意: 不會先執行父類再執行自己的這個前置方法,因為會覆蓋掉** ~~~ func (this *AddController) Prepare() { } ~~~ # 獲取表單傳遞參數 ~~~ func (c *UserController) PostInfo() { name := c.GetString("name") pwd := c.GetString("pwd") fmt.Println(name + "---" + pwd) c.Ctx.WriteString("hello world---112211-----\n") } ~~~ # 定義個基類 **注意方法覆蓋問題** 基類 ~~~ type NestPreparer interface { NestPrepare() } type baseController struct { beego.Controller isLogin bool } func (this *baseController) Prepare() { fmt.Println("------base---ok--------") //在前置里面查看符不符合這個條件 //this.AppController當前controller,看他有沒有實現NestPreparer if app, ok := this.AppController.(NestPreparer); ok { app.NestPrepare() } } ~~~ 子類 ~~~ type AdminController struct { baseController } func (this *AdminController) NestPrepare() { fmt.Println("------net---ok--------") } func (this *AdminController) Get(){ fmt.Println("------ok--------") this.Ctx.WriteString("hello world---112211-----\n") } ~~~ # 提前終止 調用 StopRun 之后,如果你還定義了 Finish 函數就不會再執行,如果需要釋放資源,那么請自己在調用 StopRun 之前手工調用 Finish 函數 **直接中止進程,可以在任意的地方執行** ~~~ func (this *AdminController) Prepare() { fmt.Println("------終止--------") this.StopRun() } ~~~ # 客戶端模擬PUT方法處理 首先要說明, 在 XHTML 1.x 標準中, 表單只支持 GET 或者 POST 方法. 雖然說根據標準, 你不應該將表單提交到 PUT 方法, 但是如果你真想的話, 也很容易, 通常可以這么做: 首先表單本身還是使用 POST 方法提交, 但是可以在表單中添加一個隱藏字段: ~~~ <form method="post" ...> <input type="hidden" name="_method" value="put" /> ~~~ 接著在 Beego 中添加一個過濾器來判斷是否將請求當做 PUT 來解析: ~~~ var FilterMethod = func(ctx *context.Context) { if ctx.BeegoInput.Query("_method")!="" && ctx.BeegoInput.IsPost(){ ctx.Request.Method = ctx.BeegoInput.Query("_method") } } beego.InsertFilter("*", beego.BeforeRouter, FilterMethod) ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看