// 当每个请求到来时,这个函数都将被调用。
// RequestCtx 提供了很多有用的处理 http 请求的方法。更多详情请参阅 RequestCtx 说明。
requestHandler := func(ctx *fasthttp.RequestCtx) {
fmt.Fprintf(ctx, "Hello, world! Requested path is %q", ctx.Path())
}
// 创建自定义服务器。
s := &fasthttp.Server{
Handler: requestHandler,
// Every response will contain 'Server: My super server' header.
Name: "My super server",
// Other Server settings may be set here.
}
if err := s.ListenAndServe("127.0.0.1:80"); err != nil {
log.Fatalf("error in ListenAndServe: %s", err)
}
func (*Server) ListenAndServe
func (s *Server) ListenAndServe(addr string) error
fasthttp 文档手册
常量
所支持的压缩级别。
与 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
。标准化后的头键由一个大写字母开头。在
-
后的第一个字母也为大写。其他的所有字母则都为小写。例子:func AppendNormalizedHeaderKeyBytes
AppendNormalizedHeaderKeyBytes
向dst
追加标准化后的 HTTP 头键(名),并且返回追加后的dst
。标准化后的头键由一个大写字母开头。在
-
后的第一个字母也为大写。其他的所有字母则都为小写。例子:func AppendQuotedArg
AppendQuotedArg
向dst
追加经过 url 加密的src
,并且返回追加后的dst
。func AppendUint
AppendUint
向dst
追加n
,并且返回追加后的dst
。func Dial
Dial
使用 tcp4 连接指定的 TCP 地址addr
。与
net.Dial
相比,该函数有以下这些额外的特性:DefaultDNSCacheDuration
持续时间缓存解析后的 TCP 地址来减少 DNS 解析器的负载。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 解析器的负载。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 解析器的负载。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 解析器的负载。DefaultDialTimeout
秒之后若连接还没有被建立,它会返回ErrDialTimeout
,可以使用DialTimeout
来自定义这个超时。addr
参数必须包含端口,例如:foobar.baz:443
foo.bar:80
aaa.com:8080
func Do
Do
发出指定的 http 请求,在得到响应后并且填充指定的 http 响应对象。请求必须至少包含一个非空的 RequestURI (包含协议和 host)或非空的 Host 头 + RequestURI。
客户端以以下顺序确定待请求的服务端:
这个函数不会跟随重定向。若要跟随重定向,请使用
Get*
。如果
resp
是nil
,那么响应会被忽略。如果向指定请求 host 的所有
DefaultMaxConnsPerHost
数量的连接都被占用,那么会返回ErrNoFreeConns
。在有性能要求的代码中,推荐通过
AcquireRequest
和AcquireResponse
来获取req
和resp
。func DoDeadline
DoDeadline
发出指定的 http 请求,并且在指定的 deadline 之前得到响应后填充指定的 http 响应对象。请求必须至少包含一个非空的 RequestURI (包含协议和 host)或非空的 Host 头 + RequestURI。
客户端以以下顺序确定待请求的服务端:
这个函数不会跟随重定向。若要跟随重定向,请使用
Get*
。如果
resp
是nil
,那么响应会被忽略。如果向指定请求 host 的所有
DefaultMaxConnsPerHost
数量的连接都被占用,那么会返回ErrNoFreeConns
。在有性能要求的代码中,推荐通过
AcquireRequest
和AcquireResponse
来获取req
和resp
。func DoTimeout
DoTimeout
发出指定的 http 请求,并且在指定的超时之前得到响应后填充指定的 http 响应对象。请求必须至少包含一个非空的 RequestURI (包含协议和 host)或非空的 Host 头 + RequestURI。
客户端以以下顺序确定待请求的服务端:
这个函数不会跟随重定向。若要跟随重定向,请使用
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。
客户端以以下顺序确定待请求的服务端:
如果
resp
是nil
,那么响应会被忽略。这个函数不会跟随重定向。若要跟随重定向,请使用
Get*
。如果向指定请求 host 的所有
DefaultMaxConnsPerHost
数量的连接都被占用,那么会返回ErrNoFreeConns
。在有性能要求的代码中,推荐通过
AcquireRequest
和AcquireResponse
来获取req
和resp
。func (*Client) DoDeadline
DoDeadline
发出指定的 http 请求,并且在指定的 deadline 之前得到响应后填充指定的 http 响应对象。请求必须至少包含一个非空的 RequestURI (包含协议和 host)或非空的 Host 头 + RequestURI。
客户端以以下顺序确定待请求的服务端:
这个函数不会跟随重定向。若要跟随重定向,请使用
Get*
。如果
resp
是nil
,那么响应会被忽略。如果向指定请求 host 的所有
DefaultMaxConnsPerHost
数量的连接都被占用,那么会返回ErrNoFreeConns
。在有性能要求的代码中,推荐通过
AcquireRequest
和AcquireResponse
来获取req
和resp
。func (*Client) DoTimeout
DoTimeout
发出指定的 http 请求,并且在指定的超时之前得到响应后填充指定的 http 响应对象。请求必须至少包含一个非空的 RequestURI (包含协议和 host)或非空的 Host 头 + RequestURI。
客户端以以下顺序确定待请求的服务端:
这个函数不会跟随重定向。若要跟随重定向,请使用
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。
客户端以以下顺序确定待请求的服务端:
这个函数不会跟随重定向。若要跟随重定向,请使用
Get*
。如果
resp
是nil
,那么响应会被忽略。如果向指定请求 host 的所有
DefaultMaxConnsPerHost
数量的连接都被占用,那么会返回ErrNoFreeConns
。在有性能要求的代码中,推荐通过
AcquireRequest
和AcquireResponse
来获取req
和resp
。func (*HostClient) DoDeadline
DoDeadline
发出指定的 http 请求,并且在指定的 deadline 之前得到响应后填充指定的 http 响应对象。请求必须至少包含一个非空的 RequestURI (包含协议和 host)或非空的 Host 头 + RequestURI。
客户端以以下顺序确定待请求的服务端:
这个函数不会跟随重定向。若要跟随重定向,请使用
Get*
。如果
resp
是nil
,那么响应会被忽略。如果向指定请求 host 的所有
DefaultMaxConnsPerHost
数量的连接都被占用,那么会返回ErrNoFreeConns
。在有性能要求的代码中,推荐通过
AcquireRequest
和AcquireResponse
来获取req
和resp
。func (*HostClient) DoTimeout
DoTimeout
发出指定的 http 请求,并且在指定的超时之前得到响应后填充指定的 http 响应对象。请求必须至少包含一个非空的 RequestURI (包含协议和 host)或非空的 Host 头 + RequestURI。
客户端以以下顺序确定待请求的服务端:
这个函数不会跟随重定向。若要跟随重定向,请使用
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
返回重写路径函数,返回移除的前缀大小。例子:
返回的路径重写函数可能会被
FS.PathRewrite
使用。func NewPathSlashesStripper
NewPathSlashesStripper
返回重写路径函数,返回移除的路径分隔符数量。例子:
返回的路径重写函数可能会被
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。
客户端以以下顺序确定待请求的服务端:
这个函数不会跟随重定向。若要跟随重定向,请使用
Get*
。如果
resp
是nil
,那么响应会被忽略。如果向指定请求 host 的所有
DefaultMaxConnsPerHost
数量的连接都被占用,那么会返回ErrNoFreeConns
。在有性能要求的代码中,推荐通过
AcquireRequest
和AcquireResponse
来获取req
和resp
。func (*PipelineClient) DoDeadline
DoDeadline
发出指定的 http 请求,并且在指定的 deadline 之前得到响应后填充指定的 http 响应对象。请求必须至少包含一个非空的 RequestURI (包含协议和 host)或非空的 Host 头 + RequestURI。
客户端以以下顺序确定待请求的服务端:
这个函数不会跟随重定向。若要跟随重定向,请使用
Get*
。如果
resp
是nil
,那么响应会被忽略。如果向指定请求 host 的所有
DefaultMaxConnsPerHost
数量的连接都被占用,那么会返回ErrNoFreeConns
。在有性能要求的代码中,推荐通过
AcquireRequest
和AcquireResponse
来获取req
和resp
。func (*PipelineClient) DoTimeout
DoTimeout
发出指定的 http 请求,并且在指定的超时之前得到响应后填充指定的 http 响应对象。请求必须至少包含一个非空的 RequestURI (包含协议和 host)或非空的 Host 头 + RequestURI。
客户端以以下顺序确定待请求的服务端:
这个函数不会跟随重定向。若要跟随重定向,请使用
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
是安全的。func (*Request) AppendBodyString
AppendBodyString
追加s
至请求体。func (*Request) Body
Body
返回请求体。func (*Request) BodyGunzip
BodyGunzip
返回未被 gzip 压缩的请求体数据。当请求体中包含
'Content-Encoding: gzip'
且读取未被 gzip 请求体时,这个方法可能会被使用。使用Body
来读取被 gzip 压缩的请求体。func (*Request) BodyInflate
BodyGunzip
返回未被压缩的请求体数据。当请求体中包含
'Content-Encoding: deflate'
且读取未被压缩请求体时,这个方法可能会被使用。使用Body
来读取被压缩的请求体。func (*Request) BodyWriteTo
BodyWriteTo
向w
写入请求体。func (*Request) BodyWriter
BodyWriter
返回用于发送请求体的 writer 。func (*Request) ConnectionClose
ConnectionClose
在'Connection: close'
头被设置时返回true
。func (*Request) ContinueReadBody
ContinueReadBody
在'Expect: 100-continue'
头被设置时读取请求体 。在调用该方法前,调用者必须发送
StatusContinue
响应。如果
maxBodySize > 0
且请求体大于maxBodySize
,会返回ErrBodyTooLarge
。func (*Request) CopyTo
CopyTo
拷贝req
的内容至dst
。func (*Request) Host
Host
返回指定请求的 host 。func (*Request) IsBodyStream
IsBodyStream
当请求体由SetBodyStream*
设置时返回true
。func (*Request) MayContinue
MayContinue
当请求头中包含'Expect: 100-continue'
时返回true
。当
MayContinue
返回true
时,调用者必须执行以下动作之一:StatusExpectationFailed
。StatusContinue
。func (*Request) MultipartForm
MultipartForm
返回请求的 multipart 表单。如果请求头的 Content-Type 不是
'multipart/form-data'
时返回ErrNoMultipartForm
。在 multipart 表单的处理结束后,
RemoveMultipartFormFiles
必须被调用。func (*Request) PostArgs
PostArgs
返回 POST 参数。func (*Request) Read
Read
从指定r
中读取请求(包含请求体)。func (*Request) ReadLimitBody
ReadLimitBody
从指定r
中读取请求(包含请求体),并且请求体大小有限制。如果
maxBodySize > 0
且请求体大于maxBodySize
,会返回ErrBodyTooLarge
。func (*Request) ReleaseBody
ReleaseBody
当请求体大于size
时释放请求体。调用它之后,将会允许垃圾回收器回收巨大的缓冲。如果使用这个函数,需要先调用
ReleaseRequest
。一般情况下不会使用这个方法。仅当你十分清楚该方法的工作细节后才可使用它。
func (*Request) RemoveMultipartFormFiles
RemoveMultipartFormFiles
删除multipart/form-data
的临时文件。func (*Request) RequestURI
RequestURI
返回请求的 URI 。func (*Request) Reset
Reset
清除请求体内容。func (*Request) ResetBody
ResetBody
清除请求体。func (*Request) SetBody
SetBody
设置请求体。在函数返回后,重用
body
参数是安全的。func (*Request) SetBodyStream
SetBodyStream
设置请求体流,bodySize
为可选。若
bodySize is >= 0
,那么bodyStream
在返回io.EOF
前必须提供精确的bodySize
字节数据。若
bodySize < 0
,那么bodyStream
会被一直读取至io.EOF
。如果
bodyStream
实现了io.Closer
接口,那么bodyStream.Close()
会在数据都被读取后被调用。注意 GET 和 HEAD 请求没有请求体。
更多详情也可参阅
SetBodyStreamWriter
。func (*Request) SetBodyStreamWriter
SetBodyStreamWriter
为请求体注册指定的sw
。这个函数可能会在以下情况下被使用:
http client push
或chunked transfer-encoding
)。注意 GET 和 HEAD 请求没有请求体。
更多详情也可参阅
SetBodyStream
。func (*Request) SetBodyString
SetBodyString
设置请求体。func (*Request) SetConnectionClose
SetConnectionClose
设置'Connection: close'
头。func (*Request) SetHost
SetHost
设置请求的 host 。func (*Request) SetHostBytes
SetHostBytes
设置请求的 host 。func (*Request) SetRequestURI
SetRequestURI
设置请求 URI 。func (*Request) SetRequestURIBytes
SetRequestURIBytes
设置请求 URI 。func (*Request) String
String
返回请求的字符串表示。在发生错误时会返回错误信息。
在有性能要求的代码中,请使用
Write
来代替String
。func (*Request) SwapBody
SwapBody
使用指定body
来交换请求体,并且返回之前的请求体。在函数返回后,禁止再使用该
body
对象。func (*Request) URI
URI
返回请求 URI 。func (*Request) Write
Write
向w
写入请求。Write
由于性能原因并不会冲刷(flush)请求至w
。更多详情也可参阅
WriteTo
。func (*Request) WriteTo
WriteTo
向w
写入请求。它实现了io.WriterTo
接口。type RequestCtx
RequestCtx
包含了收到的请求和即将发出的响应。拷贝
RequestCtx
实例是禁止的。在函数返回后
RequestHandler
必须避免使用RequestCtx
的引用。如果使用RequestCtx
的引用是不可避免的,那么RequestHandler
必须在返回前调用ctx.TimeoutError()
。在多个正在运行的 goroutine 间读取/修改
RequestCtx
是不安全的。当其他 goroutine 访问RequestCtx
时,会返回TimeoutError*
。func (*RequestCtx) ConnID
ConnID
返回连接的唯一标识 ID 。这个 ID 可以用于区分同一连接的不同请求。
func (*RequestCtx) ConnRequestNum
ConnRequestNum
返回当前连接的请求序列号。func (*RequestCtx) ConnTime
ConnTime
返回服务器开始接受请求后的持续时间。func (*RequestCtx) Error
Error
设置相应状态码以及状态信息。func (*RequestCtx) FormFile
FormFile
返回指定 multipart 表单键对应的上传后文件。在
RequestHandler
返回后这个文件会被制动删除。所以如果你需要保留它,可以预先移动或拷贝这个文件。使用
SaveMultipartFile
来永久保存这个文件。在
RequestHandler
返回前,这个返回的文件头都是合法的。func (*RequestCtx) FormValue
FormValue
返回表单指定键的值。值会在以下地方被搜寻:
还有一些其他方法来获取表单值:
QueryArgs
来获取查询字符串。PostArgs
来获取 POST 或 PUT 的请求体。MultipartForm
来获取 multipart 表单值。FormFile
来获取上传的文件。在
RequestHandler
返回前,这个返回值都是合法的。func (*RequestCtx) Hijack
Hijack
为连接劫持(connection hijacking)注册指定handler
。handler
会在RequestHandler
返回后,发送 HTTP 响应前被调用。当前连接会被传递给handler
。在handler
返回后连接会自动关闭。在以下情况下服务器会调用调用
handler
:'Connection: close'
出现于请求或响应中。handler
不允许留有对ctx
成员的引用。包含
'Connection: Upgrade'
的协议可能由HijackHandler
实现。例如:func (*RequestCtx) Host
Host
返回请求的 host 。在
RequestHandler
返回前,这个返回值都是合法的。func (*RequestCtx) ID
ID
返回请求的唯一 ID 。func (*RequestCtx) IfModifiedSince
IfModifiedSince
在当lastModified
超过'If-Modified-Since'
值时返回true
。当
'If-Modified-Since'
请求头缺失时,这个函数也返回true
。func (*RequestCtx) Init
Init
准备传递给RequestHandler
的ctx
。remoteAddr
和logger
是可选的。它们被RequestCtx.Logger()
使用。这个函数可能会被自定义的服务器实现所使用。
func (*RequestCtx) Init2
Init2
准备传递给RequestHandler
的ctx
。conn
仅用于决定本地或远程地址。这个函数可能会被自定义的服务器实现所使用。详情参阅 https://github.com/valyala/httpteleport 。
func (*RequestCtx) IsBodyStream
IsBodyStream
在响应体被通过SetBodyStream*
设置时返回true
。func (*RequestCtx) IsDelete
IsDelete
在请求方法是 DELETE 时返回true
。func (*RequestCtx) IsGet
IsGet
在请求方法是 GET 时返回true
。func (*RequestCtx) IsHead
IsPost
在请求方法是 POST 时返回true
。func (*RequestCtx) IsPut
IsPut
在请求方法是 PUT 时返回true
。func (*RequestCtx) IsTLS
IsTLS
在底层连接为tls.Conn
时返回true
。tls.Conn
是一个加密连接(又称 SSL,HTTPS)。func (*RequestCtx) LastTimeoutErrorResponse
LastTimeoutErrorResponse
返回通过TimeoutError*
调用设置的最新超时响应。这个函数可能会被自定义的服务器实现所使用。
func (*RequestCtx) LocalAddr
LocalAddr
返回指定请求的地址。总是返回非
nil
值。func (*RequestCtx) Logger
Logger
返回一个日志记录器,用于在RequestHandler
内部记录请求相关信息。通过日志记录器记录的日志包含的信息可以有请求 ID,请求持续时间,本地地址,远程地址,请求方法和请求 url 等等。
在当前请求中,重用该函数返回的日志记录器用于多次记录日志是安全的。
在
RequestHandler
返回前,该函数返回的日志记录器都是合法的。例子:
func (*RequestCtx) Method
Method
返回请求方法。在
RequestHandler
返回前,该函数的返回值都是合法的。func (*RequestCtx) MultipartForm
MultipartForm
返回请求的 multipart 表单信息。如果请求的 content-type 不是
'multipart/form-data'
,则返回ErrNoMultipartForm
。在
RequestHandler
返回后这个文件会被制动删除。所以如果你需要保留它,可以预先移动或拷贝这个文件。使用
SaveMultipartFile
来永久保存这个文件。在
RequestHandler
返回前,这个返回的文件头都是合法的。更多详情可参阅
FormFile
和FormValue
。func (*RequestCtx) NotFound
NotFound
重置响应,并且为响应设置'404 Not Found'
状态码。func (*RequestCtx) NotModified
NotModified
重置响应,并且为响应设置'304 Not Modified'
状态码。func (*RequestCtx) Path
Path
返回被请求的路径。在
RequestHandler
返回前,这个返回值都是合法的。func (*RequestCtx) PostArgs
PostArgs
返回 POST 参数。该方法不会返回
RequestURI
的查询字符串参数,使用QueryArgs
来替代。在
RequestHandler
返回前,这个返回值都是合法的。更多详情可参阅
QueryArgs
,FormFile
和FormValue
。func (*RequestCtx) PostBody
PostArgs
返回 POST 请求体。在
RequestHandler
返回前,这个返回值都是合法的。func (*RequestCtx) QueryArgs
QueryArgs
返回来自RequestURI
的查询字符串参数。该方法不会返回 POST 请求的参数,使用
PostArgs()
来替代。在
RequestHandler
返回前,这个返回值都是合法的。更多详情可参阅
PostArgs
,FormFile
和FormValue
。func (*RequestCtx) Redirect
Redirect
设置响应头尾'Location: uri'
并且设置响应的状态码statusCode
。statusCode
必须为以下值之一:其他状态码都会被 StatusFound (302) 替代。
uri
可以是绝对路径也可以是针对当前请求路径的相对路径。func (*RequestCtx) RedirectBytes
RedirectBytes
设置响应头尾'Location: uri'
并且设置响应的状态码statusCode
。statusCode
必须为以下值之一:其他状态码都会被 StatusFound (302) 替代。
uri
可以是绝对路径也可以是针对当前请求路径的相对路径。func (*RequestCtx) Referer
Referer
返回请求的 referer 。在
RequestHandler
返回前,这个返回值都是合法的。func (*RequestCtx) RemoteAddr
RemoteAddr
返回指定请求的客户端地址。总是返回非
nil
值。func (*RequestCtx) RemoteIP
RemoteIP
放回指定请求的客户端 IP 。总是返回非
nil
值。func (*RequestCtx) RequestURI
RequestURI
返回请求 URI 。在
RequestHandler
返回前,这个返回值都是合法的。func (*RequestCtx) ResetBody
ResetBody
重置响应体内容。func (*RequestCtx) SendFile
SendFile
从指定路径向响应体发送本地文件内容。这是
ServeFile(ctx, path)
的快捷方式。SendFile
通过ctx.Logger
记录所有发生的错误。更多详情可参阅
ServeFile
,FSHandler
和FS
。func (*RequestCtx) SendFileBytes
SendFileBytes
从指定路径向响应体发送本地文件内容。这是
ServeFile(ctx, path)
的快捷方式。SendFile
通过ctx.Logger
记录所有发生的错误。更多详情可参阅
ServeFile
,FSHandler
和FS
。func (*RequestCtx) SetBody
SetBody
设置响应体为指定值。在该函数返回后重用
body
参数是安全的。func (*RequestCtx) SetBodyStream
SetBodyStream
设置请求体流,bodySize
为可选。若
bodySize is >= 0
,那么bodyStream
在返回io.EOF
前必须提供精确的bodySize
字节数据。若
bodySize < 0
,那么bodyStream
会被一直读取至io.EOF
。如果
bodyStream
实现了io.Closer
接口,那么bodyStream.Close()
会在数据都被读取后被调用。更多详情也可参阅
SetBodyStreamWriter
。func (*RequestCtx) SetBodyStreamWriter
SetBodyStreamWriter
为请求体注册指定的sw
。这个函数可能会在以下情况下被使用:
http client push
或chunked transfer-encoding
)。func (*RequestCtx) SetBodyString
SetBodyString
设置请求体。func (*RequestCtx) SetConnectionClose
SetConnectionClose
设置'Connection: close'
头。func (*RequestCtx)
SetContentType
设置响应的 Content-Type 。func (*RequestCtx) SetContentTypeBytes
SetContentTypeBytes
设置响应的 Content-Type 。在函数返回后再改变
contentType
缓冲是安全的。func (*RequestCtx) SetStatusCode
SetStatusCode
设置响应的响应状态码。func (*RequestCtx) SetUserValue
SetUserValue
根据ctx
内的指定key
存储指定值(任意对象)。存储于
ctx
内的值可以通过UserValue*
获得。这个函数在多个请求处理函数间传递任意值时可能有用。
所有值在顶层的
RequestHandler
返回后被移除。另外,所有的实现了io.Close
的值的Close
方法都会在被移除时调用。func (*RequestCtx) SetUserValueBytes
SetUserValueBytes
根据ctx
内的指定key
存储指定值(任意对象)。存储于
ctx
内的值可以通过UserValue*
获得。这个函数在多个请求处理函数间传递任意值时可能有用。
所有值在顶层的
RequestHandler
返回后被移除。另外,所有的实现了io.Close
的值的Close
方法都会在被移除时调用。func (*RequestCtx) Success
Success
通过给定值设置响应的 Content-Type 和响应体。func (*RequestCtx) SuccessString
SuccessString
通过给定值设置响应的 Content-Type 和响应体。func (*RequestCtx) TLSConnectionState
TLSConnectionState
返回 TLS 连接状态。如果底层的连接不是
tls.Conn
那么该函数返回nil
。这个返回值可能会被用于鉴别 TLS 版本,客户端证书等等。
func (*RequestCtx) Time
Time
返回RequestHandler
调用时间。func (*RequestCtx) TimeoutError
TimeoutError
将响应状态码设置StatusRequestTimeout
并且按指定msg
设置响应体。在
TimeoutError
执行后所有响应的修改都会被忽略。如果仍有对于
ctx
及其成员的引用在其他的 goroutine 中,TimeoutError
必须在RequestHandler
返回前调用。不推荐使用这个函数。更推荐减少在其他 goroutine 里对
ctx
的引用,而不是使用该函数。func (*RequestCtx) TimeoutErrorWithCode
TimeoutErrorWithCode
将响应状态码设置StatusRequestTimeout
。在
TimeoutErrorWithCode
执行后所有响应的修改都会被忽略。如果仍有对于
ctx
及其成员的引用在其他的 goroutine 中,TimeoutErrorWithCode
必须在RequestHandler
返回前调用。不推荐使用这个函数。更推荐减少在其他 goroutine 里对
ctx
的引用,而不是使用该函数。func (*RequestCtx) TimeoutErrorWithResponse
TimeoutErrorWithResponse
将响应状态码设置StatusRequestTimeout
并且发送对应响应给客户端。在
TimeoutErrorWithResponse
执行后所有响应的修改都会被忽略。如果仍有对于
ctx
及其成员的引用在其他的 goroutine 中,TimeoutErrorWithResponse
必须在RequestHandler
返回前调用。不推荐使用这个函数。更推荐减少在其他 goroutine 里对
ctx
的引用,而不是使用该函数。func (*RequestCtx) URI
URI
返回请求的 uri 。在
RequestHandler
返回前,这个返回值都是合法的。func (*RequestCtx) UserAgent
UserAgent
返回来自请求的 User-Agent 头的值。func (*RequestCtx) UserValue
UserValue
按key
返回通过SetUserValue*
设置的值。func (*RequestCtx) UserValueBytes
UserValueBytes
按key
返回通过SetUserValue*
设置的值。func (*RequestCtx) VisitUserValues
VisitUserValues
对每一个存在的userValue
调用visitor
。visitor
在返回后不能再保留对userValue
的引用。如果你还想只用它们,请拷贝一份副本。func (*RequestCtx) Write
Write
向响应体写入p
。func (*RequestCtx) WriteString
WriteString
向响应体追加s
。type RequestHandler
RequestHandler
必须处理收到的请求。如果要在该函数返回后仍保持对
ctx
或其成员的引用,必须在返回之前调用ctx.TimeoutError()
。如果响应时间有限制,可以考虑使用TimeoutHandler
包裹RequestHandler
。func CompressHandler
CompressHandler
在当请求头'Accept-Encoding'
包含gzip
或deflate
时,压缩响应体。func CompressHandlerLevel
CompressHandler
在当请求头'Accept-Encoding'
包含gzip
或deflate
时,通过指定级别压缩响应体。可选的级别有:
func FSHandler
FSHandler
返回用于根据根目录响应静态文件的 handler 。stripSlashes
表明在根目录下搜索请求的文件时,有多少目录分隔符被移除。例子:返回的请求 handler 会自动生成默认首页如果目录不包含 index.html 。
返回的 handler 根据
FS.CacheDuration
来缓存请求的文件句柄。若FS.Root
目录包含大量文件,请确保你的程序通过'ulimit -n'
来保证有足够的“可打开文件”。不需要对单个
FS
实例创建多个请求 handler ,只需重用即可。func TimeoutHandler
TimeoutHandler
创建一个在指定超时时间内h
没有返回时返回StatusRequestTimeout
错误的RequestHandler
。type RequestHeader
RequestHeader
代表 HTTP 请求头。拷贝
RequestHeader
实例是禁止的。你需要创建一个新实例或使用CopyTo
。RequestHeader
不能在多个运行的 goroutine 间使用。func (*RequestHeader) Add
Add
添加'key=value'
参数。同一个
key
可以添加多个值。func (*RequestHeader) AddBytesK
AddBytesK
添加'key=value'
参数。同一个
key
可以添加多个值。func (*RequestHeader) AddBytesKV
AddBytesKV
添加'key=value'
参数。同一个
key
可以添加多个值。func (*RequestHeader) AddBytesV
AddBytesV
添加'key=value'
参数。同一个
key
可以添加多个值。func (*RequestHeader) AppendBytes
AppendBytes
像dst
追加请求头字符串,并返回dst
。func (*RequestHeader) ConnectionClose
ConnectionClose
在'Connection: close'
头被设置时返回true
。func (*RequestHeader) ConnectionUpgrade
ConnectionUpgrade
在'Connection: Upgrade
头被设置时返回true
。func (*RequestHeader) ContentLength
ContentLength
返回 Content-Length 头的值。当请求头包含 Transfer-Encoding: chunked 它可能为
-1
。func (*RequestHeader) ContentType
ContentType
返回 Content-Type 头的值。func (*RequestHeader) Cookie
Cookie
根据指定key
返回 cookie 。func (*RequestHeader) CookieBytes
CookieBytes
根据指定key
返回 cookie 。func (*RequestHeader) CopyTo
CopyTo
拷贝所有头至dst
。func (*RequestHeader) Del
Del
通过指定key
删除头。func (*RequestHeader) DelAllCookies
DelAllCookies
从请求头中删除所有 cookie 。func (*RequestHeader) DelBytes
DelBytes
通过指定key
删除头。func (*RequestHeader) DelCookie
DelCookie
通过指定key
删除 cookie 。func (*RequestHeader) DelCookieBytes
DelCookieBytes
通过指定key
删除 cookie 。func (*RequestHeader) DisableNormalizing
DisableNormalizing
关闭头名字的标准化。标准化后的头键由一个大写字母开头。在
-
后的第一个字母也为大写。其他的所有字母则都为小写。例子:func (*RequestHeader) HasAcceptEncoding
HasAcceptEncoding
当请求头包含Accept-Encoding
时返回true
。func (*RequestHeader) HasAcceptEncodingBytes
HasAcceptEncodingBytes
当请求头包含Accept-Encoding
值时返回true
。func (*RequestHeader) Header
Header
返回请求头的字节表示。在下次调用
RequestHeader
方法前,返回值都是合法的。func (*RequestHeader) Host
Host
返回 Host 头值。func (*RequestHeader) IsDelete
IsDelete
当请求方法是 DELETE 时返回true
。func (*RequestHeader) IsGet
IsGet
当请求方法是 GET 时返回true
。func (*RequestHeader) IsHTTP11
IsHTTP11
当请求是 HTTP/1.1 时返回true
。func (*RequestHeader) IsHead
IsHead
在请求方法是 HEAD 时返回true
。func (*RequestHeader) IsPost
IsPost
在请求方法是 POST 时返回true
。func (*RequestHeader) IsPut
IsPut
在请求方法是 PUT 时返回true
。func (*RequestHeader) Len
Len
返回被设置的头的数量。func (*RequestHeader) Method
Method
返回 HTTP 请求方法。func (*RequestHeader) MultipartFormBoundary
MultipartFormBoundary
返回'multipart/form-data; boundary=...'
的 boundary 部分。func (*RequestHeader) Peek
Peek
返回请求头中指定key
的值。func (*RequestHeader) PeekBytes
PeekBytes
返回请求头中指定key
的值。func (*RequestHeader) Read
Read
从r
从读取请求头。func (*RequestHeader) Referer
Referer
返回 Referer 头的值。func (*RequestHeader) RequestURI
RequestURI
从 HTTP 请求的第一行获取请求 URI 。func (*RequestHeader) Reset
Reset
清空请求头。func (*RequestHeader) ResetConnectionClose
ResetConnectionClose
在'Connection: close'
存在的情况下清空之。func (*RequestHeader) Set
Set
设置指定'key: value'
头。同一
key
可以添加多个值。func (*RequestHeader) SetByteRange
SetByteRange
设置指定'Range: bytes=startPos-endPos'
头。startPos
为负,那么'bytes=-startPos'
被设置。endPos
为负,那么'bytes=startPos-'
被设置。func (*RequestHeader) SetBytesK
SetBytesK
设置指定'key: value'
头。同一
key
可以添加多个值。func (*RequestHeader) SetBytesKV
SetBytesKV
设置指定'key: value'
头。同一
key
可以添加多个值。func (*RequestHeader) SetBytesV
SetBytesV
设置指定'key: value'
头。同一
key
可以添加多个值。func (*RequestHeader) SetCanonical
SetCanonical
在假设key
在表单值内且设置'key: value'
。func (*RequestHeader) SetConnectionClose
SetConnectionClose
设置指定'Connection: close'
头。func (*RequestHeader) SetContentLength
SetContentLength
设置指定 Content-Length 头。若
contentLength
为负,则设置'Transfer-Encoding: chunked'
头。func (*RequestHeader) SetContentType
SetContentType
设置指定 Content-Type 头。func (*RequestHeader) SetContentTypeBytes
SetContentTypeBytes
设置指定 Content-Type 头。func (*RequestHeader) SetCookie
SetCookie
设置指定'key: value'
cookie 。func (*RequestHeader) SetCookieBytesK
SetCookieBytesK
设置指定'key: value'
cookie 。func (*RequestHeader) SetCookieBytesKV
SetCookieBytesKV
设置指定'key: value'
cookie 。func (*RequestHeader) SetHost
SetHostBytes
设置 Host 头的值。func (*RequestHeader) SetMethod
SetMethod
设置 HTTP 请求方法。func (*RequestHeader) SetMethodBytes
SetMethodBytes
设置 HTTP 请求方法。func (*RequestHeader) SetMultipartFormBoundary
SetMultipartFormBoundary
设置'multipart/form-data; boundary=...'
的 boundary 部分。func (*RequestHeader) SetMultipartFormBoundaryBytes
SetMultipartFormBoundaryBytes
设置'multipart/form-data; boundary=...'
的 boundary 部分。func (*RequestHeader) SetReferer
SetReferer
设置 Referer 头的值。func (*RequestHeader) SetRefererBytes
SetRefererBytes
设置 Referer 头的值。func (*RequestHeader) SetRequestURI
SetRequestURI
设置 HTTP 请求第一行的请求 URI 。requestURI
必须被适当的加密。如果不确定,请使用URI.RequestURI
来构造合适的requestURI
。func (*RequestHeader) SetRequestURIBytes
SetRequestURIBytes
设置 HTTP 请求第一行的请求 URI 。requestURI
必须被适当的加密。如果不确定,请使用URI.RequestURI
来构造合适的requestURI
。func (*RequestHeader) SetUserAgent
SetUserAgent
设置 User-Agent 头的值。func (*RequestHeader) SetUserAgentBytes
SetUserAgentBytes
设置 User-Agent 头的值。func (*RequestHeader) String
SetUserAgentBytes
返回请求头的字符串表示。func (*RequestHeader) UserAgent
UserAgent
返回 User-Agent 头的值。func (*RequestHeader) VisitAll
VisitAll
对每一个存在的头调用f
。f
在返回后必须不能保留对键和值的引用。若要在返回后扔需要存储它们,请存储它们的副本。func (*RequestHeader) VisitAllCookie
VisitAllCookie
对每一个存在的 cookie 调用f
。f
在返回后必须不能保留对键和值的引用。若要在返回后扔需要存储它们,请存储它们的副本。func (*RequestHeader) Write
Write
将请求头写入w
。func (*RequestHeader) WriteTo
WriteTo
将请求头写入w
。WriteTo
实现了io.WriterTo
接口。type Response
Response
代表一个 HTTP 响应。拷贝
Response
实例是禁止的。你需要创建一个新实例或使用CopyTo
。Response
必须不能再多个运行的 goroutine 间使用。func AcquireResponse
AcquireResponse
从请求池中返回一个空的Response
实例。返回的
Response
实例在不再需要时可以通过ReleaseResponse
释放回池。这可以降低垃圾回收负载。func (*Response) AppendBody
AppendBody
追加p
至响应体。在函数返回后重用
p
是安全的。func (*Response) AppendBodyString
AppendBodyString
追加s
至响应体。func (*Response) Body
Body
返回响应体。func (*Response) BodyGunzip
BodyGunzip
返回未被 gzip 压缩的响应体数据。当响应体中包含
'Content-Encoding: gzip'
且读取未被 gzip 请求体时,这个方法可能会被使用。使用Body
来读取被 gzip 压缩的响应体。func (*Response) BodyInflate
BodyGunzip
返回未被压缩的响应体数据。当响应体中包含
'Content-Encoding: deflate'
且读取未被压缩请求体时,这个方法可能会被使用。使用Body
来读取被压缩的响应体。func (*Response) BodyWriteTo
BodyWriteTo
向w
写入响应体。func (*Response) BodyWriter
BodyWriter
返回用于发送请响应体的 writer 。func (*Response) ConnectionClose
ConnectionClose
在'Connection: close'
头被设置时返回true
。func (*Response) CopyTo
CopyTo
拷贝resp
的内容至dst
。func (*Response) IsBodyStream
IsBodyStream
当响应体由SetBodyStream*
设置时返回true
。func (*Response) Read
Read
从指定r
中读取响应(包含响应体)。如果在读取头的第一字节之前
r
被关闭,则返回io.EOF
。func (*Response) ReadLimitBody
ReadLimitBody
从指定r
中读取响应(包含响应体),并且响应体大小有限制。如果
maxBodySize > 0
且请求体大于maxBodySize
,会返回ErrBodyTooLarge
。如果在读取头的第一字节之前
r
被关闭,则返回io.EOF
。func (*Response) ReleaseBody
ReleaseBody
当请求体大于size
时释放响应体。调用它之后,将会允许垃圾回收器回收巨大的缓冲。如果使用这个函数,需要先调用
ReleaseRequest
。一般情况下不会使用这个方法。仅当你十分清楚该方法的工作细节后才可使用它。
func (*Response) Reset
Reset
清除响应体内容。func (*Response) ResetBody
ResetBody
清除响应体。func (*Response) SendFile
SendFile
在指定路径上注册文件,在Write
被调用时用于作为响应体。注意
SendFile
不设置 Content-Type 。你需要手动设置Header.SetContentType
。func (*Response) SetBody
SetBody
设置响应体。在函数返回后,重用
body
参数是安全的。func (*Response) SetBodyStream
SetBodyStream
设置响应体流,bodySize
为可选。若
bodySize is >= 0
,那么bodyStream
在返回io.EOF
前必须提供精确的bodySize
字节数据。若
bodySize < 0
,那么bodyStream
会被一直读取至io.EOF
。如果
bodyStream
实现了io.Closer
接口,那么bodyStream.Close()
会在数据都被读取后被调用。注意 GET 和 HEAD 请求没有请求体。
更多详情也可参阅
SetBodyStreamWriter
。func (*Response) SetBodyStreamWriter
这个函数可能会在以下情况下被使用:
http client push
或chunked transfer-encoding
)。更多详情也可参阅
SetBodyStream
。func (*Response) SetBodyString
SetBodyString
设置响应体。func (*Response) SetConnectionClose
SetConnectionClose
设置'Connection: close'
头。func (*Response) SetStatusCode
SetStatusCode
设置响应的响应状态码。func (*Response) StatusCode
StatusCode
返回响应状态码。func (*Response) String
String
返回响应的字符串表示。在发生错误时会返回错误信息。
在有性能要求的代码中,请使用
Write
来代替String
。func (*Response) SwapBody
SwapBody
使用指定body
来交换响应体,并且返回之前的响应体。在函数返回后,禁止再使用该
body
对象。func (*Response) Write
Write
向w
写入响应。Write
由于性能原因并不会冲刷(flush)响应至w
。更多详情也可参阅
WriteTo
。func (*Response) WriteDeflate
WriteDeflate
向w
写入压缩后的响应。该方法会压缩响应体,并且在向
w
写入响应前设置'Content-Encoding: deflate'
头。WriteDeflate
由于性能原因并不会冲刷(flush)响应至w
。func (*Response) WriteDeflateLevel
WriteDeflateLevel
向w
写入指定压缩级别压缩后的响应。支持的压缩级别有:
CompressNoCompression
CompressBestSpeed
CompressBestCompression
CompressDefaultCompression
该方法会压缩响应体,并且在向
w
写入响应前设置'Content-Encoding: deflate'
头。WriteDeflateLevel
由于性能原因并不会冲刷(flush)响应至w
。func (*Response) WriteGzip
WriteGzip
向w
写入 gizp 压缩后的响应。该方法会压缩响应体,并且在向
w
写入响应前设置'Content-Encoding: deflate'
头。WriteGzip
由于性能原因并不会冲刷(flush)响应至w
。func (*Response) WriteGzipLevel
WriteGzipLevel
向w
写入指定压缩级别 gzip 压缩后的响应。支持的压缩级别有:
CompressNoCompression
CompressBestSpeed
CompressBestCompression
CompressDefaultCompression
该方法会压缩响应体,并且在向
w
写入响应前设置'Content-Encoding: deflate'
头。WriteGzipLevel
由于性能原因并不会冲刷(flush)响应至w
。func (*Response) WriteTo
WriteTo
向w
写入响应。它实现了io.Writer
接口。type ResponseHeader
ResponseHeader
代表了一个 HTTP 响应头。禁止拷贝
ResponseHeader
实例。应该创建新实例或使用CopyTo
。ResponseHeader
实例必须不能再多个运行的 goroutine 间使用。func (*ResponseHeader) Add
Add
添加'key=value'
头。同一个
key
可以添加多个值。func (*ResponseHeader) AddBytesK
AddBytesK
添加'key=value'
头。同一个
key
可以添加多个值。func (*ResponseHeader) AddBytesKV
AddBytesKV
添加'key=value'
头。同一个
key
可以添加多个值。func (*ResponseHeader) AddBytesV
AddBytesV
添加'key=value'
头。同一个
key
可以添加多个值。func (*ResponseHeader) AppendBytes
AppendBytes
像dst
追加响应头字符串,并返回dst
。func (*ResponseHeader) ConnectionClose
ConnectionClose
在'Connection: close'
头被设置时返回true
。func (*ResponseHeader) ConnectionUpgrade
ConnectionUpgrade
在'Connection: Upgrade
头被设置时返回true
。func (*ResponseHeader) ContentLength
ContentLength
返回 Content-Length 头的值。当响应头包含 Transfer-Encoding: chunked 它可能为
-1
。func (*ResponseHeader) ContentType
ContentType
返回 Content-Type 头的值。func (*ResponseHeader) Cookie
Cookie
为指定的cookie.Key
填充 cookie 。如果指定的
cookie.Key
不存在,则返回false
。func (*ResponseHeader) CopyTo
CopyTo
拷贝所有头至dst
。func (*ResponseHeader) Del
Del
通过指定key
删除头。func (*ResponseHeader) DelAllCookies
DelAllCookies
从响应头中删除所有 cookie 。func (*ResponseHeader) DelBytes
DelBytes
通过指定key
删除头。func (*ResponseHeader) DelClientCookie
DelCookieBytes
指示客户端移除指定 cookie 。如果你指向移除响应头中的 cookie ,请使用
DelCookie
。func (*ResponseHeader) DelClientCookieBytes
DelClientCookieBytes
指示客户端移除指定 cookie 。如果你指向移除响应头中的 cookie ,请使用
DelCookieBytes
。func (*ResponseHeader) DelCookie
DelCookie
通过指定key
删除 cookie 。若想要指示客户端移除指定 cookie ,请使用
DelClientCookie
。func (*ResponseHeader) DelCookieBytes
DelCookieBytes
通过指定key
删除 cookie 。若想要指示客户端移除指定 cookie ,请使用
DelCookieBytes
。func (*ResponseHeader) DisableNormalizing
DisableNormalizing
关闭头名字的标准化。标准化后的头键由一个大写字母开头。在
-
后的第一个字母也为大写。其他的所有字母则都为小写。例子:func (*ResponseHeader) Header
Header
返回响应头的字节表示。在下次调用
ResponseHeader
方法前,返回值都是合法的。func (*ResponseHeader) IsHTTP11
IsHTTP11
当响应是 HTTP/1.1 时返回true
。func (*ResponseHeader) Len
Len
返回被设置的头的数量。func (*ResponseHeader) Peek
Peek
返回响应头中指定key
的值。func (*ResponseHeader) PeekBytes
PeekBytes
返回响应头中指定key
的值。func (*ResponseHeader) Read
Read
从r
从读取响应头。如果在读取第一个头字节前
r
被关闭,则返回io.EOF
。func (*ResponseHeader) Reset
Reset
清空响应头。func (*ResponseHeader) ResetConnectionClose
ResetConnectionClose
在'Connection: close'
存在的情况下清空之。func (*ResponseHeader) Server
Server
返回服务器 handler 值。func (*ResponseHeader) Set
Set
设置指定'key: value'
头。同一
key
可以添加多个值。func (*ResponseHeader) SetBytesK
SetBytesK
设置指定'key: value'
头。同一
key
可以添加多个值。func (*ResponseHeader) SetBytesKV
SetBytesKV
设置指定'key: value'
头。同一
key
可以添加多个值。func (*ResponseHeader) SetBytesV
SetBytesV
设置指定'key: value'
头。同一
key
可以添加多个值。func (*ResponseHeader) SetCanonical
SetCanonical
在假设key
在表单值内且设置'key: value'
。func (*ResponseHeader) SetConnectionClose
SetConnectionClose
设置指定'Connection: close'
头。func (*ResponseHeader) SetContentLength
SetContentLength
设置指定 Content-Length 头。若
contentLength
为负,则设置'Transfer-Encoding: chunked'
头。func (*ResponseHeader) SetContentRange
SetContentRange
设置指定'Content-Range: bytes startPos-endPos/contentLength'
头。func (*ResponseHeader) SetContentType
SetContentType
设置指定 Content-Type 头。func (*ResponseHeader) SetContentTypeBytes
SetContentTypeBytes
设置指定 Content-Type 头。func (*ResponseHeader) SetCookie
SetCookie
设置指定'key: value'
cookie 。func (*ResponseHeader) SetLastModified
SetContentTypeBytes
设置指定 Last-Modified 头。func (*ResponseHeader) SetServer
SetServer
设置指定 Server 头。func (*ResponseHeader) SetServerBytes
SetServerBytes
设置指定 Server 头。func (*ResponseHeader) SetStatusCode
SetStatusCode
设置响应的响应状态码。func (*ResponseHeader) StatusCode
SetStatusCode
返回响应的响应状态码。func (*ResponseHeader) String
String
返回响应头的字符串表示。func (*ResponseHeader) VisitAll
VisitAll
对每一个存在的头调用f
。f
在返回后必须不能保留对键和值的引用。若要在返回后扔需要存储它们,请存储它们的副本。func (*ResponseHeader) VisitAllCookie
VisitAllCookie
对每一个存在的 cookie 调用f
。f
在返回后必须不能保留对键和值的引用。若要在返回后扔需要存储它们,请存储它们的副本。func (*ResponseHeader) Write
Write
将响应头写入w
。func (*ResponseHeader) WriteTo
WriteTo
将响应头写入w
。WriteTo
实现了io.WriterTo
接口。type Server
Server
实现了 HTTP 服务器。默认配置满足了大多数使用者的需求。在理解后果的前提下,你可以修改这些配置。
不允许复制
Server
实例。应该创建新实例。在多个正在运行的 goroutine 间调用
Server
方法是安全的。例子:
func (*Server) ListenAndServe
ListenAndServe
使用指定的handler
处理来自指定 TCP 地址addr
的 HTTP 请求。func (*Server) ListenAndServeTLS
ListenAndServeTLS
使用指定的handler
处理来自指定 TCP 地址addr
的 HTTPS 请求。certFile
和keyFile
是 TLS 证书和密钥文件的路径。func (*Server) ListenAndServeTLSEmbed
ListenAndServeTLSEmbed
使用指定的handler
处理来自指定 TCP 地址addr
的 HTTPS 请求。certData
和keyData
必须包含合法的 TLS 证书和密钥数据。func (*Server) ListenAndServeUNIX
ListenAndServeUNIX
使用指定的handler
处理来自指定 UNIX 地址addr
的 HTTP 请求。这个函数会在开始接受请求前删除所有
addr
下的文件。该函数会为制定 UNIX 地址
addr
设置参数中指定的mode
。func (*Server) Serve
Serve
使用指定的handler
来处理来自listener
的连接。在
listener
返回永久性的错误之前,Serve
都会一直保持阻塞。func (*Server) ServeConn
ServeConn
使用指定的handler
处理来自指定连接的 HTTP 请求。如果所有来自
c
的请求都被成功处理,ServeConn
会返回nil
。否则返回一个非空错误。连接
c
必须立刻将所有数据通过Write()
发送至客户端,否则请求的处理可能会被挂起。ServeConn
在返回之前会关闭c
。func (*Server) ServeTLS
ServeTLS
使用指定的handler
来处理来自指定net.Listener
的 HTTPS 请求。certFile
和keyFile
是 TLS 证书和密钥文件的路径。func (*Server) ServeTLSEmbed
ServeTLSEmbed
使用指定的handler
来处理来自指定net.Listener
的 HTTPS 请求。certData
和keyData
必须包含合法的 TLS 证书和密钥数据。type StreamWriter
StreamWriter
必须向w
写入数据。通常
StreamWriter
在一个循环(又称 'data streaming')中向w
写入数据。当
w
返回错误时,必须立刻返回。由于写入数据是会被缓存的,所以在 reader 读取数据前必须调用
w.Flush
。type URI
URI
表示 URI :)。不允许复制
URI
实例。应该创建新实例或使用CopyTo
。不能在多个运行的 goroutine 间使用
URI
实例。func AcquireURI
AcquireURI
从请求池中返回一个空的URI
实例。返回的
URI
实例在不再需要时可以通过ReleaseURI
释放回池。这可以降低垃圾回收负载。func (*URI) AppendBytes
AppendBytes
像dst
追加完整 uri ,并返回dst
。func (*URI) CopyTo
CopyTo
复制 uri 内容至dst
。func (*URI) FullURI
FullURI
返回 {Scheme}://{Host}{RequestURI}#{Hash} 形式的完整 uri 。func (*URI) Hash
Hash
返回URI
的哈希部分。如 http://aaa.com/foo/bar?baz=123#qwe 中的 qwe 。在下一次
URI
方法被调用前返回值都是合法的。func (*URI) Host
Host
返回 host 部分,如 http://aaa.com/foo/bar?baz=123#qwe 中的 aaa.com 。返回值总是小写。
func (*URI) LastPathSegment
LastPathSegment
返回 uri 里最后一个 '/' 后面的部分。例子:
func (*URI) Parse
Parse
根据指定host
和uri
初始化URI
。func (*URI) Path
Path
返回URI
path 部分,如 http://aaa.com/foo/bar?baz=123#qwe 中的 /foo/bar 。返回值总是被 url 解码并且被标准化。如 '//f%20obar/baz/../zzz' 变为 '/f obar/zzz' 。
在下一次
URI
方法被调用前返回值都是合法的。func (*URI) PathOriginal
PathOriginal
返回传递给URI.Parse()
的requestURI
。在下一次
URI
方法被调用前返回值都是合法的。func (*URI) QueryArgs
QueryArgs
返回查询参数。func (*URI) QueryString
QueryString
返回查询字符串。如 http://aaa.com/foo/bar?baz=123#qwe 中的 baz=123 。在下一次
URI
方法被调用前返回值都是合法的。func (*URI) RequestURI
RequestURI
返回 RequestURI ,例如没有 Scheme 和 Host 部分的 URI 。func (*URI) Reset
Reset
清空 uri 。func (*URI) Scheme
Scheme
返回 URI scheme 部分。如 http://aaa.com/foo/bar?baz=123#qwe 中的 http 。返回值总是小写的。
在下一次
URI
方法被调用前返回值都是合法的。func (*URI) SetHash
SetHash sets URI hash.
func (*URI) SetHashBytes
SetHashBytes sets URI hash.
func (*URI) SetHost
SetHost
设置 uri 的 host 。func (*URI) SetHostBytes
SetHostBytes
设置 uri 的 host 。func (*URI) SetPath
SetPath
设置 uri 的 path 。func (*URI) SetPathBytes
SetPathBytes
设置 uri 的 path 。func (*URI) SetQueryString
SetQueryString
设置 uri 的查询字符串。func (*URI) SetQueryStringBytes
SetQueryStringBytes
设置 uri 的查询字符串。func (*URI) SetScheme
SetScheme
设置 uri 的 scheme ,如 http ,https ,ftp 等等。func (*URI) SetSchemeBytes
SetSchemeBytes
设置 uri 的 scheme ,如 http ,https ,ftp 等等。func (*URI) String
String
返回完整 uri 。func (*URI) Update
Update
更新 uri 。以下形式的
newURI
是可接受的:func (*URI) UpdateBytes
UpdateBytes
更新 uri 。以下形式的
newURI
是可接受的:func (*URI) WriteTo
WriteTo
向w
写入完整 uri 。WriteTo
实现了io.WriterTo
接口。