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
是安全的。