<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                其實嚴格意義來說`Go`中沒有類、繼承的等概念,為了結合`Laravel`框架的編程思想更好的理解,所以做了個控制器基礎類`base_api_controller.go` ,當然你也無需繼承任何的基礎類或其他控制器。 ## 控制器定義 一個典型的控制器類定義如下: ``` // Package v1 處理業務邏輯, GoHub 控制器 v1 package v1 import ( "gohub/pkg/response" "github.com/gin-gonic/gin" ) type BaseAPIController struct { } func (lc *BaseAPIController) Index(c *gin.Context) { c.JSON(200, "Hello World") } ``` 控制器類文件實際上可以是任意位置只需要路由文件中找到“它”即可,但我們為了遵守框架的編碼規范和目錄結構,**強烈建議**在`app/http/controllers/api`目錄下定義它,當然幾章前提到的接口區分`v1` `v2` `...`版本,所以文件的標準位置是 ``` app/http/controllers/api/v1 ``` 控制器類無需繼承任何包(類)文件,但我們還是建議你繼承一個基礎包(類)文件`base_api_controller.go`以便不時之需。 ## 控制器方法作用域 與其他語言不同,在`Go`中不能使用`public` `protected` `private` 關鍵字聲明方法的作用域,簡單的來說只有兩種情況: 只能在當前包文件訪問的使用**開頭字母小寫**,比如說: ``` func (lc *BaseAPIController) show(c *gin.Context) { c.JSON(200, "Hello World") } ``` 在所有包文件中都能使用的(全局)使用**開頭字母大寫**,比如說: ``` func (lc *BaseAPIController) Show(c *gin.Context) { c.JSON(200, "Hello World") } ``` 更多更加詳細的示例請查閱`Go語言基礎` ## 渲染輸出 默認情況下,控制器輸出可以直接使用`gin`框架自帶的輸出方式,而不是`return` 。 為了更加方便和規范請使用框架公共響應包(類)文件`"gohub/pkg/response"` 你需要在控制器的頂部 `import` 這個文件才可以使用。 #### 響應成功 `response.ShowSuccess`方法可接收三個參數: - 第一個參數為固定的`gin.Context`指針 - 第二個參數為響應的數據,可以是任何數據格式(`Go`版本必須`>= 1.18`) - 第三個參數非必填,響應自定義的`msg`信息,默認為`success` 示例一: ``` response.ShowSuccess(c, "操作成功!") ``` 輸出結果: ``` { "code":0, "msg":"success", "data":"操作成功!" } ``` 示例二: ``` response.ShowSuccess(c, gin.H{ "list": data, "pagination": pagination, },"操作成功!") ``` 輸出結果: ``` { "code":0, "msg":"操作成功!", "data":{ "list":..., "pagination":... } } ``` #### 響應失敗 `response.ShowError`方法可接收三個參數: - 第一個參數為固定的`gin.Context`指針 - 第二個參數是`Int`類型的錯誤碼(請盡可能使用標準的`http狀態碼`,如 `401無權限訪問`) - 第三個參數非必填,響應自定義的`msg`信息,默認為`error` 示例: ``` response.ShowError(c, 404, "路由未定義,請確認 url 和請求方法是否正確。") ``` 輸出結果: ``` { "code":401, "msg":"路由未定義,請確認 url 和請求方法是否正確。", "data":null } ``` **所有響應的`HTTP`狀態碼均為200的`JSON`格式數據**,方便業務進行重試,同時也不會造成無關緊要的錯誤上報。 業務方只需判斷`code`不為`0`就拋出`msg`的異常信息即可。 更加令人驚喜的是,無論在任意地方使用這個方法都會輸出結果,并不在繼續往下執行代碼。這可以讓我們不必在某些業務下頻繁拋出無關緊要的異常特意的終止執行。
                  <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>

                              哎呀哎呀视频在线观看