<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之旅 廣告
                ## 使用http.Client 標準庫的net/http包的http.Client結構十分靈活,可用戶處理HTTP API。此結構具有獨立的傳輸函數,并且相對簡單,可以短路請求,修改每個客戶端操作的請求頭以及處理REST操作。 創建http請求是常見的操作,本節將從操作http.Client對象的基礎開始。 ### 實踐 1. 建立 client.go: ``` package client import ( "crypto/tls" "net/http" ) // Setup 設置http.Client并重新定義全局DefaultClient func Setup(isSecure, nop bool) *http.Client { c := http.DefaultClient // 有時為了方便測試,我們需要關閉SSL驗證 if !isSecure { c.Transport = &http.Transport{ TLSClientConfig: &tls.Config{ InsecureSkipVerify: false, }, } } if nop { c.Transport = &NopTransport{} } http.DefaultClient = c return c } // NopTransport 沒有任何操作的傳輸 type NopTransport struct { } // RoundTrip 實現了 RoundTripper 接口 func (n *NopTransport) RoundTrip(*http.Request) (*http.Response, error) { // 注意這里只為StatusCode賦值 return &http.Response{StatusCode: http.StatusTeapot}, nil } ``` 2. 建立 exec.go: ``` package client import ( "fmt" "net/http" ) // DoOps 接收client參數 然后請求 google.com func DoOps(c *http.Client) error { resp, err := c.Get("http://www.google.com") if err != nil { return err } fmt.Println("results of DoOps:", resp.StatusCode) return nil } // DefaultGetGolang 使用默認的client請求 golang.org func DefaultGetGolang() error { resp, err := http.Get("https://www.golang.org") if err != nil { return err } fmt.Println("results of DefaultGetGolang:", resp.StatusCode) return nil } ``` 3. 建立 storage.go: ``` package client import ( "fmt" "net/http" ) // Controller 包含有匿名字段*http.Client type Controller struct { *http.Client } func (c *Controller) DoOps() error { resp, err := c.Client.Get("http://www.google.com") if err != nil { return err } fmt.Println("results of client.DoOps", resp.StatusCode) return nil } ``` 4. 建立 main.go: ``` package main import "github.com/agtorre/go-cookbook/chapter6/client" func main() { cli := client.Setup(true, false) if err := client.DefaultGetGolang(); err != nil { panic(err) } if err := client.DoOps(cli); err != nil { panic(err) } c := client.Controller{Client: cli} if err := c.DoOps(); err != nil { panic(err) } client.Setup(true, true) if err := client.DefaultGetGolang(); err != nil { panic(err) } } ``` 5. 這會輸出: ``` results of DefaultGetGolang: 200 results of DoOps: 200 results of client.DoOps 200 results of DefaultGetGolang: 418 ``` ### 說明 net/http包公開了一個DefaultClient包變量,該變量使用默認配置操作Do,GET,POST等。我們的Setup函數返回一個客戶端,該客戶端在設置時,靈活的修改可以通過調整實現的RoundTripper接口實現。 通過調整Setup函數的nop參數,可以方便的對client的配置進行調整,這對測試來說很重要。 * * * * 學識淺薄,錯誤在所難免。歡迎在群中就本書提出修改意見,以饗后來者,長風拜謝。 Golang中國(211938256) beego實戰(258969317) Go實踐(386056972)
                  <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>

                              哎呀哎呀视频在线观看