fasthttp 文檔手冊
貌似文章有最大長度限制,完整全文地址:https://github.com/DavidCai1993/my-blog/issues/35
常量
所支持的壓縮級別。
與 net/http 相同的 HTTP 狀態嗎。
DefaultConcurrency 為默認情況下(沒有設置 Server.Concurrency 時)服務器可以接受的最大並發請求數。
DefaultDNSCacheDuration 是由 Dial* 函數族緩存處理過的 TCP 地址的持續時間。
DefaultDialTimeout 是由 Dial 和 DialDualStack 使用的用於建立 TCP 連接的超時時間。
DefaultMaxConnsPerHost 是 http 客戶端在默認情況下(如果沒有設置 Client.MaxConnsPerHost)單個 host 可以建立的最大並發連接數。
DefaultMaxIdleConnDuration 是在空閑的 keep-alive 連接被關閉前默認的持續時間。
DefaultMaxPendingRequests 是 PipelineClient.MaxPendingRequests 的默認值。
DefaultMaxRequestBodySize 是服務器默認可讀的最大請求體大小。
更多詳情請參閱 Server.MaxRequestBodySize 。
FSCompressedFileSuffix 是當需要使用新文件名存儲被壓縮后的文件時, FS 在原始文件名上添加的前綴。更多詳情請參閱 FS.Compress 。
FSHandlerCacheDuration 是由 FS 所打開的非活躍文件句柄的默認失效時間。
變量
ErrBodyTooLarge 會在請求體或者響應體超過指定限制時返回。
ErrDialTimeout 會在 TCP 握手超時時觸發。
ErrMissingFile 會在沒有與指定的 multipart 表單鍵相關聯的被上傳文件時由 FormFile 返回。
ErrNoArgValue 會在指定 Args 鍵缺少值時返回。
ErrNoMultipartForm 意味着請求的 Content-Type 不是 'multipart/form-data' 。
ErrPipelineOverflow 會在請求的隊列溢出時,由 PipelineClient.Do* 函數族返回。
func AppendBytesStr
AppendBytesStr 向 dst 追加 src ,並且返回追加后的 dst 。
這個函數與 append(dst, src...) 的性能沒有差別。目前它僅用於向后兼容。
這個函數已經棄用並且可能很快被移除。
func AppendGunzipBytes
AppendGunzipBytes 向 dst 追加 gunzip 壓縮后的 src ,並且返回追加后的 dst 。
func AppendGzipBytes
AppendGzipBytes 向 dst 追加 gzip 壓縮后的 src ,並且返回追加后的 dst 。
func AppendGzipBytesLevel
AppendGzipBytesLevel 向 dst 追加指定級別的 gzip 壓縮后的 src ,並且返回追加后的 dst 。
支持的壓縮級別有:
CompressNoCompressionCompressBestSpeedCompressBestCompressionCompressDefaultCompression
func AppendHTMLEscape
AppendHTMLEscape 向 dst 追加 HTML 轉義后的 src ,並且返回追加后的 dst 。
func AppendHTMLEscapeBytes
AppendHTMLEscapeBytes 向 dst 追加 HTML 轉義后的 src ,並且返回追加后的 dst 。
func AppendHTTPDate
AppendHTTPDate 向 dst 追加符合 HTTP-compliant (RFC1123) 表示的時間 ,並且返回追加后的 dst 。
func AppendIPv4
AppendIPv4 向 dst 追加表示 ip v4 的字符串 ,並且返回追加后的 dst 。
func AppendNormalizedHeaderKey
AppendNormalizedHeaderKey 向 dst 追加標准化后的 HTTP 頭鍵(名),並且返回追加后的 dst 。
標准化后的頭鍵由一個大寫字母開頭。在 - 后的第一個字母也為大寫。其他的所有字母則都為小寫。例子:
- coNTENT-TYPe -> Content-Type
- HOST -> Host
- foo-bar-baz -> Foo-Bar-Baz
func AppendNormalizedHeaderKeyBytes
AppendNormalizedHeaderKeyBytes 向 dst 追加標准化后的 HTTP 頭鍵(名),並且返回追加后的 dst 。
標准化后的頭鍵由一個大寫字母開頭。在 - 后的第一個字母也為大寫。其他的所有字母則都為小寫。例子:
- coNTENT-TYPe -> Content-Type
- HOST -> Host
- foo-bar-baz -> Foo-Bar-Baz
func AppendQuotedArg
AppendQuotedArg 向 dst 追加經過 url 加密的 src ,並且返回追加后的 dst 。
func AppendUint
AppendUint 向 dst 追加 n,並且返回追加后的 dst 。
func Dial
Dial 使用 tcp4 連接指定的 TCP 地址 addr 。
與 net.Dial 相比,該函數有以下這些額外的特性:
- 它通過以
DefaultDNSCacheDuration持續時間緩存解析后的 TCP 地址來減少 DNS 解析器的負載。 - 它通過輪詢來連接所有被解析后的 TCP 連接,直至第一個連接被建立。這在當其中的某一個 TCP 地址臨時性不可用時相當有用。
- 在
DefaultDialTimeout秒之后若連接還沒有被建立,它會返回ErrDialTimeout,可以使用DialTimeout來自定義這個超時。
addr 參數必須包含端口,例如:
foobar.baz:443foo.bar:80aaa.com:8080
func DialDualStack
DialDualStack 使用 tcp4 和 tcp6 連接指定的 TCP 地址 addr 。
與 net.Dial 相比,該函數有以下這些額外的特性:
- 它通過以
DefaultDNSCacheDuration持續時間緩存解析后的 TCP 地址來減少 DNS 解析器的負載。 - 它通過輪詢來連接所有被解析后的 TCP 連接,直至第一個連接被建立。這在當其中的某一個 TCP 地址臨時性不可用時相當有用。
- 在
DefaultDialTimeout秒之后若連接還沒有被建立,它會返回ErrDialTimeout,可以使用DialTimeout來自定義這個超時。
addr 參數必須包含端口,例如:
foobar.baz:443foo.bar:80aaa.com:8080
func DialDualStackTimeout
DialDualStackTimeout 使用 tcp4 和 tcp6 連接指定的 TCP 地址 addr ,並且會在指定時間后超時。
與 net.Dial 相比,該函數有以下這些額外的特性:
- 它通過以
DefaultDNSCacheDuration持續時間緩存解析后的 TCP 地址來減少 DNS 解析器的負載。 - 它通過輪詢來連接所有被解析后的 TCP 連接,直至第一個連接被建立。這在當其中的某一個 TCP 地址臨時性不可用時相當有用。
- 在
DefaultDialTimeout秒之后若連接還沒有被建立,它會返回ErrDialTimeout,可以使用DialTimeout來自定義這個超時。
addr 參數必須包含端口,例如:
foobar.baz:443foo.bar:80aaa.com:8080
func DialTimeout
DialTimeout 使用 tcp4 和 tcp6 連接指定的 TCP 地址 addr ,並且會在指定時間后超時。
與 net.Dial 相比,該函數有以下這些額外的特性:
- 它通過以
DefaultDNSCacheDuration持續時間緩存解析后的 TCP 地址來減少 DNS 解析器的負載。 - 它通過輪詢來連接所有被解析后的 TCP 連接,直至第一個連接被建立。這在當其中的某一個 TCP 地址臨時性不可用時相當有用。
- 在
DefaultDialTimeout秒之后若連接還沒有被建立,它會返回ErrDialTimeout,可以使用DialTimeout來自定義這個超時。
addr 參數必須包含端口,例如:
foobar.baz:443foo.bar:80aaa.com:8080
func Do
Do 發出指定的 http 請求,在得到響應后並且填充指定的 http 響應對象。
請求必須至少包含一個非空的 RequestURI (包含協議和 host)或非空的 Host 頭 + RequestURI。
客戶端以以下順序確定待請求的服務端:
- 如果 RequestURI 包含完整的帶有協議和 host 的 url ,則從 RequestURI 中取得。
- 否則就從 Host 頭中取得。
這個函數不會跟隨重定向。若要跟隨重定向,請使用 Get* 。
如果 resp 是 nil ,那么響應會被忽略。
如果向指定請求 host 的所有 DefaultMaxConnsPerHost 數量的連接都被占用,那么會返回 ErrNoFreeConns。
在有性能要求的代碼中,推薦通過 AcquireRequest 和 AcquireResponse 來獲取 req 和 resp 。
func DoDeadline
DoDeadline 發出指定的 http 請求,並且在指定的 deadline 之前得到響應后填充指定的 http 響應對象。
請求必須至少包含一個非空的 RequestURI (包含協議和 host)或非空的 Host 頭 + RequestURI。
客戶端以以下順序確定待請求的服務端:
- 如果 RequestURI 包含完整的帶有協議和 host 的 url ,則從 RequestURI 中取得。
- 否則就從 Host 頭中取得。
這個函數不會跟隨重定向。若要跟隨重定向,請使用 Get* 。
如果 resp 是 nil ,那么響應會被忽略。
如果向指定請求 host 的所有 DefaultMaxConnsPerHost 數量的連接都被占用,那么會返回 ErrNoFreeConns。
在有性能要求的代碼中,推薦通過 AcquireRequest 和 AcquireResponse 來獲取 req 和 resp 。
func DoTimeout
DoTimeout 發出指定的 http 請求,並且在指定的超時之前得到響應后填充指定的 http 響應對象。
請求必須至少包含一個非空的 RequestURI (包含協議和 host)或非空的 Host 頭 + RequestURI。
客戶端以以下順序確定待請求的服務端:
- 如果 RequestURI 包含完整的帶有協議和 host 的 url ,則從 RequestURI 中取得。
- 否則就從 Host 頭中取得。
這個函數不會跟隨重定向。若要跟隨重定向,請使用 Get* 。
如果 resp 是 nil ,那么響應會被忽略。
如果向指定請求 host 的所有 DefaultMaxConnsPerHost 數量的連接都被占用,那么會返回 ErrNoFreeConns。
在有性能要求的代碼中,推薦通過 AcquireRequest 和 AcquireResponse 來獲取 req 和 resp 。
func EqualBytesStr
EqualBytesStr,在 string(b) == s 時返回 true。
這個函數與 string(b) == s 的性能沒有差別。目前它僅用於向后兼容。
這個函數已經棄用並且可能很快被移除。
func FileLastModified
FileLastModified 返回文件的最后修改時間。
func Get
Get 向 dst 追加 url 信息,並且通過 body 返回它。
這個函數會跟隨重定向。若要手動操作重定向,請使用 Do* 。
如果 dst 為 nil ,那么則會分配一個新的 body 緩沖。
func GetDeadline
GetDeadline 向 dst 追加 url 信息,並且通過 body 返回它。
這個函數會跟隨重定向。若要手動操作重定向,請使用 Do* 。
如果 dst 為 nil ,那么則會分配一個新的 body 緩沖。
若在指定的 deadline 之前沒能獲取到響應,那么會返回 ErrTimeout 。
func GetTimeout
GetTimeout 向 dst 追加 url 信息,並且通過 body 返回它。
這個函數會跟隨重定向。若要手動操作重定向,請使用 Do* 。
如果 dst 為 nil ,那么則會分配一個新的 body 緩沖。
若在指定的超時之前沒能獲取到響應,那么會返回 ErrTimeout 。
func ListenAndServe
ListenAndServe 使用指定的 handler 處理來自指定 TCP 地址 addr 的 HTTP 請求。
例子:
func ListenAndServeTLS
ListenAndServeTLS 使用指定的 handler 處理來自指定 TCP 地址 addr 的 HTTPS 請求。
certFile 和 keyFile 是 TLS 證書和密鑰文件的路徑。
func ListenAndServeTLSEmbed
ListenAndServeTLSEmbed 使用指定的 handler 處理來自指定 TCP 地址 addr 的 HTTPS 請求。
certData 和 keyData 必須包含合法的 TLS 證書和密鑰數據。
func ListenAndServeUNIX
ListenAndServeUNIX 使用指定的 handler 處理來自指定 UNIX 地址 addr 的 HTTP 請求。
這個函數會在開始接受請求前刪除所有 addr 下的文件。
該函數會為制定 UNIX 地址 addr 設置參數中指定的 mode 。
func NewStreamReader
NewStreamReader 返回一個 reader ,用於獲取所有由 sw 生成的數據。
返回的 reader 可以被傳遞至 Response.SetBodyStream 。
在返回的 reader 中所有的數據都被讀取完畢之后,必須調用 Close 。否則可能會造成 goroutine 泄露。
更多詳情可參閱 Response.SetBodyStreamWriter 。
func ParseByteRange
ParseByteRange 用於解釋 'Range: bytes=...' 頭的值。
依據的規范是 https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35 。
func ParseHTTPDate
ParseHTTPDate 用於解釋符合 HTTP-compliant (RFC1123) 規范的時間。
func ParseIPv4
ParseIPv4 解釋 ipStr 提供的 ip 地址,並填充 dst ,然后返回填充后的 dst 。
func ParseUfloat
ParseUfloat 解釋 buf 提供的無符號浮點數。
func ParseUint
ParseUint 解釋 buf 提供的無符號整型數。
func Post
Post 使用指定 POST 參數向指定 url 發出 POST 請求。
請求體會追加值 dst ,並且通過 body 返回。
這個函數會跟隨重定向。若要手動操作重定向,請使用 Do* 。
若 dst 是 nil ,那么新的 body 緩沖會被分配。
如果 postArgs 是 nil ,則發送空 POST 請求體。
func ReleaseArgs
ReleaseArgs 向池中釋放通過 AquireArgs 取得的對象。
不要試圖訪問釋放的 Args 對象,可能會產生數據競爭。
func ReleaseByteBuffer
ReleaseByteBuffer 返回池中釋放指定字節緩沖。
在釋放回池之后, ByteBuffer.B 不能再被訪問,可能會產生數據競爭。
func ReleaseCookie
ReleaseCookie 向池中釋放由 AcquireCookie 返回的對象。
不要試圖訪問釋放的 Cookie 對象,可能會產生數據競爭。
func ReleaseRequest
ReleaseRequest 向池中釋放由 AcquireRequest 返回的對象。
在釋放回池之后,禁止再訪問 req 對象以及它的任何成員。
func ReleaseResponse
ReleaseResponse 向池中釋放由 AcquireResponse 返回的對象。
在釋放回池之后,禁止再訪問 resp 對象以及它的任何成員。
func ReleaseURI
ReleaseURI 向池中釋放由 AcquireURI 返回的對象。
不要試圖訪問釋放的 URI 對象,可能會產生數據競爭。
func SaveMultipartFile
SaveMultipartFile 在指定的 path 下保存文件 fh 。
func Serve
Serve 使用指定的 handler 來處理來自 listener 的連接。
在 listener 返回永久性的錯誤之前, Serve 都會一直保持阻塞。
例子:
func ServeConn
ServeConn 使用指定的 handler 處理來自指定連接的 HTTP 請求。
如果所有來自 c 的請求都被成功處理,ServeConn 會返回 nil 。否則返回一個非空錯誤。
連接 c 必須立刻將所有數據通過 Write() 發送至客戶端,否則請求的處理可能會被掛起。
ServeConn 在返回之前會關閉 c 。
func ServeFile
ServeFile 返回來自指定 path 的壓縮后文件內容的 HTTP 響應。
在以下情況下,HTTP 響應可能會包含未壓縮文件內容:
- 缺少
'Accept-Encoding: gzip'請求頭。 - 沒有對文件目錄的寫權限。
如果 path 指向一個目錄,那么目錄的內容會被返回。
如果你不需要響應壓縮后的文件內容,請使用 ServeFileUncompressed 。
更多詳情可參閱 RequestCtx.SendFile 。
func ServeFileBytes
ServeFileBytes 返回來自指定 path 的壓縮后文件內容的 HTTP 響應。
在以下情況下,HTTP 響應可能會包含未壓縮文件內容:
- 缺少
'Accept-Encoding: gzip'請求頭。 - 沒有對文件目錄的寫權限。
如果 path 指向一個目錄,那么目錄的內容會被返回。
如果你不需要響應壓縮后的文件內容,請使用 ServeFileUncompressed 。
更多詳情可參閱 RequestCtx.SendFile 。
func ServeFileBytesUncompressed
ServeFileBytesUncompressed 返回來自指定 path 文件內容的 HTTP 響應。
如果 path 指向一個目錄,那么目錄的內容會被返回。
若需要處理壓縮后的文件,請使用 ServeFileBytes 。
更多詳情可參閱 RequestCtx.SendFileBytes 。
func ServeFileUncompressed
ServeFileUncompressed 返回來自指定 path 文件內容的 HTTP 響應。
如果 path 指向一個目錄,那么目錄的內容會被返回。
若需要處理壓縮后的文件,請使用 ServeFile 。
更多詳情可參閱 RequestCtx.SendFile 。
func ServeTLS
ServeTLS 使用指定的 handler 來處理來自指定 net.Listener 的 HTTPS 請求。
certFile 和 keyFile 是 TLS 證書和密鑰文件的路徑。
func ServeTLSEmbed
ServeTLSEmbed 使用指定的 handler 來處理來自指定 net.Listener 的 HTTPS 請求。
certData 和 keyData 必須包含合法的 TLS 證書和密鑰數據。
func StatusMessage
StatusMessage 根據指定的狀態碼返回 HTTP 狀態信息。
func WriteGunzip
WriteGunzip 向 w 寫入經 gunzip 壓縮的 p ,並且返回未壓縮的字節數。
func WriteGzip
WriteGunzip 向 w 寫入經 gzip 壓縮的 p ,並且返回未壓縮的字節數。
func WriteGzipLevel
WriteGunzip 向 w 寫入經指定級別 gzip 壓縮的 p ,並且返回未壓縮的字節數。
支持的壓縮級別有:
CompressNoCompressionCompressBestSpeedCompressBestCompressionCompressDefaultCompression
func WriteInflate
WriteGunzip 向 w 寫入壓縮后的 p ,並且返回未壓縮的字節數。
func WriteMultipartForm
WriteMultipartForm 使用指定的 w 寫入指定的表單 f 。
type Args
Args 代表查詢字符串參數。
拷貝 Args 實例是禁止的。你需要使用 CopyTo() 函數或創建一個新實例。
Args 實例必須不能在並發執行的 goroutine 間使用。
func AcquireArgs
AcquireArgs 從池中返回一個空的 Args 對象。
返回的 Args 實例在不再需要時可以通過 ReleaseArgs 釋放回池。這可以降低垃圾回收負載。
func (*Args) Add
Add 添加 'key=value' 參數。
同一個 key 可以添加多個值。
func (*Args) AddBytesK
AddBytesK 添加 'key=value' 參數。
同一個 key 可以添加多個值。
func (*Args) AddBytesKV
AddBytesKV 添加 'key=value' 參數。
同一個 key 可以添加多個值。
func (*Args) AddBytesV
AddBytesV 添加 'key=value' 參數。
同一個 key 可以添加多個值。
func (*Args) AppendBytes
AppendBytes 像 dst 追加查詢字符串,並返回 dst 。
func (*Args) CopyTo
CopyTo 將所有的參數復制至 dst 。
func (*Args) Del
Del 刪除鍵為指定 key 的參數。
func (*Args) DelBytes
Del 刪除鍵為指定 key 的參數。
func (*Args) GetUfloat
GetUfloat 返回指定 key 的無符號浮點數值。
func (*Args) GetUfloatOrZero
GetUfloatOrZero 返回指定 key 的無符號浮點數值。
當出錯時返回 0 。
func (*Args) GetUint
GetUint 返回指定 key 的無符號整型數值。
func (*Args) GetUintOrZero
GetUintOrZero 返回指定 key 的無符號整型數值。
當出錯時返回 0 。
func (*Args) Has
Has 在當 Args 中存在指定 key 時返回 true 。
func (*Args) HasBytes
HasBytes 在當 Args 中存在指定 key 時返回 true 。
func (*Args) Len
Len 查詢參數的數量。
func (*Args) Parse
Parse 解析包含查詢參數的字符串。
func (*Args) ParseBytes
ParseBytes 解析包含查詢參數的 b。
func (*Args) Peek
Peek 返回查詢參數中指定 key 的值。
func (*Args) PeekBytes
PeekBytes 返回查詢參數中指定 key 的值。
func (*Args) PeekMulti
PeekMulti 返回查詢參數中指定 key 的所有值。
func (*Args) PeekMultiBytes
PeekMultiBytes 返回查詢參數中指定 key 的所有值。
func (*Args) QueryString
QueryString 返回查詢參數的字符串表示。
在下個 Args 方法調用之前,返回值都是合法的。
func (*Args) Reset
Reset 清除所有查詢參數。
func (*Args) Set
Set 設置 'key=value' 參數。
func (*Args) SetBytesK
SetBytesK 設置 'key=value' 參數。
func (*Args) SetBytesKV
SetBytesKV 設置 'key=value' 參數。
func (*Args) SetBytesV
SetBytesV 設置 'key=value' 參數。
func (*Args) SetUint
SetUint 為指定 key 設置無符號整數值。
func (*Args) SetUintBytes
SetUintBytes 為指定 key 設置無符號整數值。
func (*Args) String
String 返回查詢參數的字符串表示。
func (*Args) VisitAll
VisitAll 對每一個存在的參數調用 f 。
f 在返回后必須不能保留對鍵和值的引用。若要在返回后扔需要存儲它們,請存儲它們的副本。
func (*Args) WriteTo
WriteTo 向 w 寫入查詢字符串。
WriteTo 實現了 io.WriterTo 接口。
type Client
Client 實現了 HTTP 客戶端。
不允許按值拷貝 Client ,應該創建一個新的實例。
在多個運行的 goroutine 間調用 Client 方法是安全的。
func (*Client) Do
Do 發出指定的 http 請求,在得到響應后並且填充指定的 http 響應對象。
請求必須至少包含一個非空的 RequestURI (包含協議和 host)或非空的 Host 頭 + RequestURI。
客戶端以以下順序確定待請求的服務端:
- 如果 RequestURI 包含完整的帶有協議和 host 的 url ,則從 RequestURI 中取得。
- 否則就從 Host 頭中取得。
如果 resp 是 nil ,那么響應會被忽略。
這個函數不會跟隨重定向。若要跟隨重定向,請使用 Get* 。
如果向指定請求 host 的所有 DefaultMaxConnsPerHost 數量的連接都被占用,那么會返回 ErrNoFreeConns。
在有性能要求的代碼中,推薦通過 AcquireRequest 和 AcquireResponse 來獲取 req 和 resp 。
func (*Client) DoDeadline
DoDeadline 發出指定的 http 請求,並且在指定的 deadline 之前得到響應后填充指定的 http 響應對象。
請求必須至少包含一個非空的 RequestURI (包含協議和 host)或非空的 Host 頭 + RequestURI。
客戶端以以下順序確定待請求的服務端:
- 如果 RequestURI 包含完整的帶有協議和 host 的 url ,則從 RequestURI 中取得。
- 否則就從 Host 頭中取得。
這個函數不會跟隨重定向。若要跟隨重定向,請使用 Get* 。
如果 resp 是 nil ,那么響應會被忽略。
如果向指定請求 host 的所有 DefaultMaxConnsPerHost 數量的連接都被占用,那么會返回 ErrNoFreeConns。
在有性能要求的代碼中,推薦通過 AcquireRequest 和 AcquireResponse 來獲取 req 和 resp 。
func (*Client) DoTimeout
DoTimeout 發出指定的 http 請求,並且在指定的超時之前得到響應后填充指定的 http 響應對象。
請求必須至少包含一個非空的 RequestURI (包含協議和 host)或非空的 Host 頭 + RequestURI。
客戶端以以下順序確定待請求的服務端:
- 如果 RequestURI 包含完整的帶有協議和 host 的 url ,則從 RequestURI 中取得。
- 否則就從 Host 頭中取得。
這個函數不會跟隨重定向。若要跟隨重定向,請使用 Get* 。
如果 resp 是 nil ,那么響應會被忽略。
如果向指定請求 host 的所有 DefaultMaxConnsPerHost 數量的連接都被占用,那么會返回 ErrNoFreeConns。
在有性能要求的代碼中,推薦通過 AcquireRequest 和 AcquireResponse 來獲取 req 和 resp 。
func (*Client) Get
Get 向 dst 追加 url 信息,並且通過 body 返回它。
這個函數會跟隨重定向。若要手動操作重定向,請使用 Do* 。
如果 dst 為 nil ,那么則會分配一個新的 body 緩沖。
func (*Client) GetDeadline
GetDeadline 向 dst 追加 url 信息,並且通過 body 返回它。
這個函數會跟隨重定向。若要手動操作重定向,請使用 Do* 。
如果 dst 為 nil ,那么則會分配一個新的 body 緩沖。
若在指定的 deadline 之前沒能獲取到響應,那么會返回 ErrTimeout 。
func (*Client) GetTimeout
GetTimeout 向 dst 追加 url 信息,並且通過 body 返回它。
這個函數會跟隨重定向。若要手動操作重定向,請使用 Do* 。
如果 dst 為 nil ,那么則會分配一個新的 body 緩沖。
若在指定的超時之前沒能獲取到響應,那么會返回 ErrTimeout 。
func (*Client) Post
Post 使用指定 POST 參數向指定 url 發出 POST 請求。
請求體會追加值 dst ,並且通過 body 返回。
這個函數會跟隨重定向。若要手動操作重定向,請使用 Do* 。
若 dst 是 nil ,那么新的 body 緩沖會被分配。
如果 postArgs 是 nil ,則發送空 POST 請求體。
type Cookie
Cookie 代表 HTTP 相應的 cookie 。
不允許按值拷貝 Cookie ,應該創建一個新的實例。
在多個運行的 goroutine 間使用 Cookie 實例是禁止的。
func AcquireCookie
AcquireCookie 從池中返回一個空的 Cookie 對象。
返回的 Cookie 實例在不再需要時可以通過 ReleaseCookie 釋放回池。這可以降低垃圾回收負載。
func (*Cookie) AppendBytes
AppendBytes 向 dst 追加 cookie ,並且返回追加后的 dst 。
func (*Cookie) Cookie
Cookie 返回 cookie 的表示。
直到下次調用 Cookie 方法前,返回值都是合法的。
func (*Cookie) CopyTo
CopyTo 拷貝 src cookie 至 c 。
func (*Cookie) Domain
Domain 返回 cookie 的 domain 值。
直到下次調用會改變 Cookie 的方法前,返回值都是合法的。
func (*Cookie) Expire
Expire 返回 cookie 的過期時間。
若沒設置過期,則返回 CookieExpireUnlimited 。
func (*Cookie) HTTPOnly
HTTPOnly 在 cookie 為 http only 時返回 true 。
func (*Cookie) Key
Key 返回 cookie 名字。
直到下次調用會改變 Cookie 的方法前,返回值都是合法的。
func (*Cookie) Parse
Parse 解析 Set-Cookie 頭。
func (*Cookie) ParseBytes
ParseBytes 解析 Set-Cookie 頭。
func (*Cookie) Path
Path 返回 cookie path 。
func (*Cookie) Reset
Reset 清空該 cookie 。
func (*Cookie) Secure
Secure 在當 cookie 為 secure 時返回 true 。
func (*Cookie) SetDomain
SetDomain 設置 cookie 的 domain 。
func (*Cookie) SetDomainBytes
SetDomainBytes 設置 cookie 的 domain 。
func (*Cookie) SetExpire
SetExpire 設置 cookie 的過期時間。
若要使該 cookie 在客戶端過期,則將值設置為 CookieExpireDelete 。
默認情況下 cookie 的壽命由瀏覽器會話限制。
func (*Cookie) SetHTTPOnly
SetHTTPOnly 將 cookie 的 httpOnly 標識設置為指定值。
func (*Cookie) SetKey
SetKey 設置 cookie 名。
func (*Cookie) SetKeyBytes
SetKeyBytes 設置 cookie 名。
func (*Cookie) SetPath
SetPath 設置 cookie 路徑。
func (*Cookie) SetPathBytes
SetPathBytes 設置 cookie 路徑。
func (*Cookie) SetSecure
SetSecure 將 cookie 的 secure 標識設置為指定值。
func (*Cookie) SetValue
SetValue 設置 cookie 的值。
func (*Cookie) SetValueBytes
SetValueBytes 設置 cookie 的值。
func (*Cookie) String
String 返回 cookie 的字符串表示。
func (*Cookie) Value
Value 返回 cookie 的值。
直到下次調用會改變 Cookie 的方法前,返回值都是合法的。
func (*Cookie) WriteTo
WriteTo 將 cookie 的字符串表示寫入 w 。
WriteTo 實現了 io.WriterTo 接口。
type DialFunc
DialFunc 必須建立到 addr 的連接。
沒有必要為 HTTPS 建立到 TLS(SSL)的連接。若 HostClient.IsTLS 被設置,則客戶端會自動轉換連接至 TLS 。
TCP address passed to DialFunc always contains host and port. Example TCP addr values: 傳遞至DialFunc 的 TCP 地址總是包含 host 和端口。例子:
foobar.com:80foobar.com:443foobar.com:8080
type FS
FS 代表了通過本地文件系統來響應靜態文件 HTTP 請求的設置。
不允許復制 FS 值,應該創建新的 FS 值。
例子:
func (*FS) NewRequestHandler
NewRequestHandler 通過指定的 FS 設置返回新的請求 handler 。
返回的 handler 根據 FS.CacheDuration 來緩存請求的文件句柄。若 FS.Root 目錄包含大量文件,請確保你的程序通過 'ulimit -n' 來保證有足夠的“可打開文件”。
不需要對單個 FS 實例創建多個請求 handler ,只需重用即可。
type HijackHandler
HijackHandler 必須處理攔截的連接 c 。
在 HijackHandler 返回后連接 c 會被自動關閉。
在 HijackHandler 返回后連接 c 必須不可再被使用。
type HostClient
HostClient 均衡地向列於 Addr 中的 host 發起請求。
禁止拷貝 HostClient 實例。應使用創建新的實例。
在多個運行的 goroutine 間執行 HostClient 方法是安全的。
例子:
func (*HostClient) Do
Do 發出指定的 http 請求,在得到響應后並且填充指定的 http 響應對象。
請求必須至少包含一個非空的 RequestURI (包含協議和 host)或非空的 Host 頭 + RequestURI。
客戶端以以下順序確定待請求的服務端:
- 如果 RequestURI 包含完整的帶有協議和 host 的 url ,則從 RequestURI 中取得。
- 否則就從 Host 頭中取得。
這個函數不會跟隨重定向。若要跟隨重定向,請使用 Get* 。
如果 resp 是 nil ,那么響應會被忽略。
如果向指定請求 host 的所有 DefaultMaxConnsPerHost 數量的連接都被占用,那么會返回 ErrNoFreeConns。
在有性能要求的代碼中,推薦通過 AcquireRequest 和 AcquireResponse 來獲取 req 和 resp 。
func (*HostClient) DoDeadline
DoDeadline 發出指定的 http 請求,並且在指定的 deadline 之前得到響應后填充指定的 http 響應對象。
請求必須至少包含一個非空的 RequestURI (包含協議和 host)或非空的 Host 頭 + RequestURI。
客戶端以以下順序確定待請求的服務端:
- 如果 RequestURI 包含完整的帶有協議和 host 的 url ,則從 RequestURI 中取得。
- 否則就從 Host 頭中取得。
這個函數不會跟隨重定向。若要跟隨重定向,請使用 Get* 。
如果 resp 是 nil ,那么響應會被忽略。
如果向指定請求 host 的所有 DefaultMaxConnsPerHost 數量的連接都被占用,那么會返回 ErrNoFreeConns。
在有性能要求的代碼中,推薦通過 AcquireRequest 和 AcquireResponse 來獲取 req 和 resp 。
func (*HostClient) DoTimeout
DoTimeout 發出指定的 http 請求,並且在指定的超時之前得到響應后填充指定的 http 響應對象。
請求必須至少包含一個非空的 RequestURI (包含協議和 host)或非空的 Host 頭 + RequestURI。
客戶端以以下順序確定待請求的服務端:
- 如果 RequestURI 包含完整的帶有協議和 host 的 url ,則從 RequestURI 中取得。
- 否則就從 Host 頭中取得。
這個函數不會跟隨重定向。若要跟隨重定向,請使用 Get* 。
如果 resp 是 nil ,那么響應會被忽略。
如果向指定請求 host 的所有 DefaultMaxConnsPerHost 數量的連接都被占用,那么會返回 ErrNoFreeConns。
在有性能要求的代碼中,推薦通過 AcquireRequest 和 AcquireResponse 來獲取 req 和 resp 。
func (*HostClient) Get
Get 向 dst 追加 url 信息,並且通過 body 返回它。
這個函數會跟隨重定向。若要手動操作重定向,請使用 Do* 。
如果 dst 為 nil ,那么則會分配一個新的 body 緩沖。
func (*HostClient) GetDeadline
GetDeadline 向 dst 追加 url 信息,並且通過 body 返回它。
這個函數會跟隨重定向。若要手動操作重定向,請使用 Do* 。
如果 dst 為 nil ,那么則會分配一個新的 body 緩沖。
若在指定的 deadline 之前沒能獲取到響應,那么會返回 ErrTimeout 。
func (*HostClient) GetTimeout
GetTimeout 向 dst 追加 url 信息,並且通過 body 返回它。
這個函數會跟隨重定向。若要手動操作重定向,請使用 Do* 。
如果 dst 為 nil ,那么則會分配一個新的 body 緩沖。
若在指定的超時之前沒能獲取到響應,那么會返回 ErrTimeout 。
func (*HostClient) LastUseTime
LastUseTime 返回客戶端最后被使用的時間。
func (*HostClient) PendingRequests
PendingRequests 返回正在執行的請求數。
func (*HostClient) Post
Post 使用指定 POST 參數向指定 url 發出 POST 請求。
請求體會追加值 dst ,並且通過 body 返回。
這個函數會跟隨重定向。若要手動操作重定向,請使用 Do* 。
若 dst 是 nil ,那么新的 body 緩沖會被分配。
如果 postArgs 是 nil ,則發送空 POST 請求體。
type Logger
Logger 被用於記錄格式化信息日志。
type PathRewriteFunc
PathRewriteFunc 必須返回基於 ctx.Path() 的新請求路徑。
該函數用於在 FS 中轉義當前請求路徑至相對於 FS.Root 的相對路徑。
處於安全原因,返回的路徑中不允許包含 '/../' 子字符串。
func NewPathPrefixStripper
NewPathPrefixStripper 返回重寫路徑函數,返回移除的前綴大小。
例子:
- prefixSize = 0, 原路徑: "/foo/bar", 結果: "/foo/bar"
- prefixSize = 3, 原路徑: "/foo/bar", 結果: "o/bar"
- prefixSize = 7, 原路徑: "/foo/bar", 結果: "r"
返回的路徑重寫函數可能會被 FS.PathRewrite 使用。
func NewPathSlashesStripper
NewPathSlashesStripper 返回重寫路徑函數,返回移除的路徑分隔符數量。
例子:
- slashesCount = 0, 原路徑: "/foo/bar", 結果: "/foo/bar"
- slashesCount = 1, 原路徑: "/foo/bar", 結果: "/bar"
- slashesCount = 2, 原路徑: "/foo/bar", 結果: ""
返回的路徑重寫函數可能會被 FS.PathRewrite 使用。
type PipelineClient
PipelineClient 通過一個指定的並發連接限制數,來發送請求。
這個客戶端可能被用於高負載的 RPC 系統。更多詳情參閱 https://en.wikipedia.org/wiki/HTTP_pipelining 。
禁止拷貝 PipelineClient 實例。應該創建新實例。
在運行的 goroutine 間調用 PipelineClient 方法是安全的。
func (*PipelineClient) Do
Do 發出指定的 http 請求,在得到響應后並且填充指定的 http 響應對象。
請求必須至少包含一個非空的 RequestURI (包含協議和 host)或非空的 Host 頭 + RequestURI。
客戶端以以下順序確定待請求的服務端:
- 如果 RequestURI 包含完整的帶有協議和 host 的 url ,則從 RequestURI 中取得。
- 否則就從 Host 頭中取得。
這個函數不會跟隨重定向。若要跟隨重定向,請使用 Get* 。
如果 resp 是 nil ,那么響應會被忽略。
如果向指定請求 host 的所有 DefaultMaxConnsPerHost 數量的連接都被占用,那么會返回 ErrNoFreeConns。
在有性能要求的代碼中,推薦通過 AcquireRequest 和 AcquireResponse 來獲取 req 和 resp 。
func (*PipelineClient) DoDeadline
DoDeadline 發出指定的 http 請求,並且在指定的 deadline 之前得到響應后填充指定的 http 響應對象。
請求必須至少包含一個非空的 RequestURI (包含協議和 host)或非空的 Host 頭 + RequestURI。
客戶端以以下順序確定待請求的服務端:
- 如果 RequestURI 包含完整的帶有協議和 host 的 url ,則從 RequestURI 中取得。
- 否則就從 Host 頭中取得。
這個函數不會跟隨重定向。若要跟隨重定向,請使用 Get* 。
如果 resp 是 nil ,那么響應會被忽略。
如果向指定請求 host 的所有 DefaultMaxConnsPerHost 數量的連接都被占用,那么會返回 ErrNoFreeConns。
在有性能要求的代碼中,推薦通過 AcquireRequest 和 AcquireResponse 來獲取 req 和 resp 。
func (*PipelineClient) DoTimeout
DoTimeout 發出指定的 http 請求,並且在指定的超時之前得到響應后填充指定的 http 響應對象。
請求必須至少包含一個非空的 RequestURI (包含協議和 host)或非空的 Host 頭 + RequestURI。
客戶端以以下順序確定待請求的服務端:
- 如果 RequestURI 包含完整的帶有協議和 host 的 url ,則從 RequestURI 中取得。
- 否則就從 Host 頭中取得。
這個函數不會跟隨重定向。若要跟隨重定向,請使用 Get* 。
如果 resp 是 nil ,那么響應會被忽略。
如果向指定請求 host 的所有 DefaultMaxConnsPerHost 數量的連接都被占用,那么會返回 ErrNoFreeConns。
在有性能要求的代碼中,推薦通過 AcquireRequest 和 AcquireResponse 來獲取 req 和 resp 。
func (*PipelineClient) PendingRequests
PendingRequests 返回正在執行的請求數。
type Request
Request 代表一個 HTTP 請求。
禁止拷貝 Request 實例。應該創建新實例或使用 CopyTo 。
Request 實例必須不能再多個運行的 goroutine 間使用。
func AcquireRequest
AcquireRequest 從請求池中返回一個空的 Request 實例。
返回的 Request 實例在不再需要時可以通過 ReleaseRequest 釋放回池。這可以降低垃圾回收負載。
func (*Request) AppendBody
AppendBody 追加 p 至請求體。
在函數返回后重用 p 是安全的。
