[TOC]
# 客戶端請求
httplib 庫主要用來模擬客戶端發送 HTTP 請求,類似于 Curl 工具,支持 JQuery 類似的鏈式操作。使用起來相當的方便;通過如下方式進行安裝:
go get github.com/astaxie/beego/httplib
## 如何使用
首先導入包
import (
"github.com/astaxie/beego/httplib"
)
然后初始化請求方法,返回對象
req:=httplib.Get("http://beego.me/")
然后我們就可以獲取數據了
str, err := req.String()
if err != nil {
t.Fatal(err)
}
fmt.Println(str)
## 支持的方法對象
httplib 包里面支持如下的方法返回 request 對象:
- Get(url string)
- Post(url string)
- Put(url string)
- Delete(url string)
- Head(url string)
## 支持 debug 輸出
可以根據上面五個方法返回的對象進行調試信息的輸出:
req.Debug(true)
這樣就可以看到請求數據的詳細輸出
httplib.Get("http://beego.me/").Debug(true).Response()
//輸出數據如下
GET / HTTP/0.0
Host: beego.me
User-Agent: beegoServer
## 支持 HTTPS 請求
如果請求的網站是 HTTPS 的,那么我們就需要設置 client 的 TLS 信息,如下所示:
req.SetTLSClientConfig(&tls.Config{InsecureSkipVerify: true})
關于如何設置這些信息請訪問: http://gowalker.org/crypto/tls#Config
## 支持超時設置
通過如下接口可以設置請求的超時時間和數據讀取時間:
req.SetTimeout(connectTimeout, readWriteTimeout)
以上方法都是針對 request 對象的,所以你第一步必須是返回 request 對象,然后鏈式操作,類似這樣的代碼:
httplib.Get("http://beego.me/").SetTimeout(100 * time.Second, 30 * time.Second).Response()
## 設置請求參數
對于 Put 或者 Post 請求,需要發送參數,那么可以通過 Param 發送 k/v 數據,如下所示:
req:=httplib.Post("http://beego.me/")
req.Param("username","astaxie")
req.Param("password","123456")
## 發送大片的數據
有時候需要上傳文件之類的模擬,那么如何發送這個文件數據呢?可以通過 Body 函數來操作,舉例如下:
req:=httplib.Post("http://beego.me/")
bt,err:=ioutil.ReadFile("hello.txt")
if err!=nil{
log.Fatal("read file err:",err)
}
req.Body(bt)
## 設置 header 信息
除了請求參數之外,我們有些時候需要模擬一些頭信息,例如
Accept-Encoding:gzip,deflate,sdch
Host:beego.me
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36
可以通過 Header 函數來設置,如下所示:
req:=httplib.Post("http://beego.me/")
req.Header("Accept-Encoding","gzip,deflate,sdch")
req.Header("Host","beego.me")
req.Header("User-Agent","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36")
## httplib支持文件直接上傳接口
PostFile 第一個參數是form 表單的字段名,第二個是需要發送的文件名或者文件路徑
```
b:=httplib.Post("http://beego.me/")
b.Param("username","astaxie")
b.Param("password","123456")
b.PostFile("uploadfile1", "httplib.pdf")
b.PostFile("uploadfile2", "httplib.txt")
str, err := b.String()
if err != nil {
t.Fatal(err)
}
```
## 獲取返回結果
上面這些都是在發送請求之前的設置,接下來我們開始發送請求,然后如何來獲取數據呢?主要有如下幾種方式:
- 返回 Response 對象,`req.Response()` 方法
這個是 http.Response 對象,用戶可以自己讀取 body 的數據等。
- 返回 bytes,`req.Bytes()` 方法
直接返回請求 URL 返回的內容
- 返回 string,`req.String()` 方法
直接返回請求 URL 返回的內容
- 保存為文件,`req.ToFile(filename)` 方法
返回結果保存到文件名為 filename 的文件中
- 解析為 JSON 結構,`req.ToJson(&result)` 方法
返回結構直接解析為 JSON 格式,解析到 result 對象中
- 解析為 XML 結構,`req.ToXml(&result)` 方法
返回結構直接解析為 XML 格式,解析到 result 對象中
- 寫在前面的話
- 第0章 beego 簡介
- 0.1 為beego貢獻
- 0.2 發布版本
- 0.3 升級指南
- 第1章 安裝升級
- 1.1 bee工具的使用
- 第2章 快速入門
- 2.1 新建項目
- 2.2 路由設置
- 2.3 Controller運行機制
- 2.4 Model邏輯
- 2.5 View編寫
- 2.6 靜態文件處理
- 第3章 beego的MVC架構
- 3.1 Model設計
- 3.1.1 概述
- 3.1.2 ORM使用
- 3.1.3 CRUD操作
- 3.1.4 高級查詢
- 3.1.5 原生SQL查詢
- 3.1.6 構造查詢
- 3.1.7 事物處理
- 3.1.8 模型定義
- 3.1.9 命令模式
- 3.1.10 測試用例
- 3.1.11 自定義字段
- 3.1.12 FAQ
- 3.2 View設計
- 3.2.1 模板語法指南
- 3.2.2 模板處理
- 3.2.3 模板函數
- 3.2.4 靜態文件處理
- 3.2.5 模板分頁處理
- 3.3 Controller設計
- 3.3.1 參數配置
- 3.3.2 路由設置
- 3.3.3 控制器函數
- 3.3.4 XSRF過濾
- 3.3.5 請求數據處理
- 3.3.6 session 控制
- 3.3.7 過濾器
- 3.3.8 flash 數據
- 3.3.9 URL構建
- 3.3.10 多種格式數據輸出
- 3.3.11 表單數據驗證
- 3.3.12 錯誤處理
- 3.3.13 日志處理
- 第4章 beego的模塊設計
- 4.1 session 模塊
- 4.2 grace 模塊
- 4.3 cache 模塊
- 4.4 logs 模塊
- 4.5 httplib 模塊
- 4.6 context 模塊
- 4.7 toolbox 模塊
- 4.8 config 模塊
- 4.9 i18n 模塊
- 第5章 beego高級編程
- 5.1 進程內監控
- 5.2 API自動化文檔
- 第6章 應用部署
- 6.1 獨立部署
- 6.2 Supervisor部署
- 6.3 Nginx 部署
- 6.4 Apache 部署
- 第7章 第三方庫
- 第8章 應用例子
- 8.1 在線聊天室
- 8.2 短域名服務
- 8.3 Todo列表
- 第9章 FAQ