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
。
支持的壓縮級別有:
CompressNoCompression
CompressBestSpeed
CompressBestCompression
CompressDefaultCompression
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:443
foo.bar:80
aaa.com:8080
func DialDualStack
DialDualStack
使用 tcp4 和 tcp6 連接指定的 TCP 地址 addr
。
與 net.Dial
相比,該函數有以下這些額外的特性:
- 它通過以
DefaultDNSCacheDuration
持續時間緩存解析后的 TCP 地址來減少 DNS 解析器的負載。 - 它通過輪詢來連接所有被解析后的 TCP 連接,直至第一個連接被建立。這在當其中的某一個 TCP 地址臨時性不可用時相當有用。
- 在
DefaultDialTimeout
秒之后若連接還沒有被建立,它會返回ErrDialTimeout
,可以使用DialTimeout
來自定義這個超時。
addr
參數必須包含端口,例如:
foobar.baz:443
foo.bar:80
aaa.com:8080
func DialDualStackTimeout
DialDualStackTimeout
使用 tcp4 和 tcp6 連接指定的 TCP 地址 addr
,並且會在指定時間后超時。
與 net.Dial
相比,該函數有以下這些額外的特性:
- 它通過以
DefaultDNSCacheDuration
持續時間緩存解析后的 TCP 地址來減少 DNS 解析器的負載。 - 它通過輪詢來連接所有被解析后的 TCP 連接,直至第一個連接被建立。這在當其中的某一個 TCP 地址臨時性不可用時相當有用。
- 在
DefaultDialTimeout
秒之后若連接還沒有被建立,它會返回ErrDialTimeout
,可以使用DialTimeout
來自定義這個超時。
addr
參數必須包含端口,例如:
foobar.baz:443
foo.bar:80
aaa.com:8080
func DialTimeout
DialTimeout
使用 tcp4 和 tcp6 連接指定的 TCP 地址 addr
,並且會在指定時間后超時。
與 net.Dial
相比,該函數有以下這些額外的特性:
- 它通過以
DefaultDNSCacheDuration
持續時間緩存解析后的 TCP 地址來減少 DNS 解析器的負載。 - 它通過輪詢來連接所有被解析后的 TCP 連接,直至第一個連接被建立。這在當其中的某一個 TCP 地址臨時性不可用時相當有用。
- 在
DefaultDialTimeout
秒之后若連接還沒有被建立,它會返回ErrDialTimeout
,可以使用DialTimeout
來自定義這個超時。
addr
參數必須包含端口,例如:
foobar.baz:443
foo.bar:80
aaa.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
,並且返回未壓縮的字節數。
支持的壓縮級別有:
CompressNoCompression
CompressBestSpeed
CompressBestCompression
CompressDefaultCompression
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:80
foobar.com:443
foobar.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
是安全的。