go标准库之net/http

golang  

net/http 包学习解析

  • Client struct HTTP客户端

    1. Client类型代表HTTP客户端,它的零值(DefaultClient)是默认是使用DefaultTransport的可用客户端
    2. Client Transport 字段一般会含有内部状态(缓存TCP连接),因此Client类型值应该尽量被重用而不是每次都需要创建.Client类型可以安全的被多个go程同时使用.
    3. Client 类型的层次比 RoundTripper 接口(如 Transport)高,还会管理HTTPcookie和重定向等细节
    • Transport RoundTripper

      Transport 指定执行独立,单次HTTP请求的机制.如果Transport为nil,则使用DefaultTransport

    • CheckRedirect func(req *Request,via []*Request) error
      1. CheckRedirect 指定处理重定向的策略
      2. 如果 CheckRedirect 不为 nil ,客户端会在执行重定向之前调用本断函数字段.
      3. 参数 req via 是将要执行的请求和已经执行的请求 (切片, 越新的请求越靠后)
      4. 如果 CheckRedirect 返回一个错误, 本类型的Get方法不会发送请求req,而是返回之前得到的最后一个回复和错误.(包装进 url.Error 类型里)
      5. 默认策略: 连续10次请求后停止
    • Jar CookieJar

      Jar 指定 cookie管理器, 如果Jar为nil,请求中不会发送 cookie , 回复中的 cookie 会被忽略.

    • Timeout time.Duration
      1. Timeout 指定本类型的执行请求的时间限制.
      2. 该超时限制包括连接时间.重定向和读取回复主体的时间.
      3. 计时器会在 Head . Get . Post Do 方法返回后继续运作并在超时后中断回复主体的读取.
      4. Timeout 为零值表示不设置超时
      5. Client 实例的 Transport 字段必须支持 CancelRequest 方法,否则Client 会在试图用 Head . Get . Post Do 方法执行请求时返回错误.
  • ListenAndServer

    使用指定的监听地址和处理器启动一个HTTP服务端.处理器通常参数是nil,这表示采用包变量

  • DefaultServeMux

    默认处理器,http.Handle和http.HandleFunc函数可以向DefaultServeMux添加处理器

  • Server struct
    1. http服务管理配置,
    2. Addr : ":8080" 端口
    3. Handler: myHandler 处理器
    4. ReadTimeout: 10 * time.second 读超时
    5. WriterTimeout: 10 * time.Second 写超时
    6. MaxHeaderBytes: 1 << 20 请求头最大字节数
  • const DefaultMaxHeaderBytes

    HTTP请求头的的最大允许长度.可以通过设置Server.MaxHeaderBytes字段来覆盖.

  • const DefaultMaxIdleConnsPerHost

    Transport的MaxIDleConnsPerHost的默认值

  • const TimeFormat

    当解析HTTP头域中的时间时,用time.Parse或time.Format函数的时间格式.这种格式类似time.RFC1123但强制采用GMT时区

  • var DefaultClient

    用于包含Get/Head/Post的默认Client

  • var ErrBodyReadAfterClose

    在Request或者Response的body字段已经关闭后,试图从中读取时,就会返回ErrBodyReadAgerClose.这个错误一般发生在:HTTP处理器中调用完ResponseWriter接口或者WriteHeader或者Write后从请求读取数据的时候.

  • var ErrHandleTimeout

    在处理器超时以后调用ResponseWriter接口的Write方法,就会返回处理超时

  • var ErrLineTooLong,var ErrMissingFile

    当请求中没有提供给FormFile函数的文件字段名,或者该字段名不是文件字段时,该函数就会返回

  • type ProtocolError

    HTTP请求解析错误

  • func CanonicalHeaderKey

    返回头信息(表示为Header类型)的键s的规范化格式.规范化过程中让单词首字母和'-'后的第一个字母大写,其余字母小写.例如"accept-encoding"规范化为"Accept-Encoding"

  • func DetectContentType

    用于确定数据的Content-Type.函数总是返回一个合法的MIME类型;如果它不能确定数据的类型,将返回"application/octet-stream".它最多检测数据的前512字节

  • func ParseHTTPVersion

    解析HTTP版本字符串.如"HTTP/1.0"返回(1,0,true)

  • func ParseTime

    用3种格式TimeFormat,time.RFC850和time.ANSIC尝试解析一个时间头的值(如Date:header)

  • func StatusText

    返回HTTP状态码code对应的文本,如220对应"OK",如果code是未知的状态码,返回""

  • type ConnState

    ConnState代表一个客户端到服务端的连接状态.本类型用于可选的Server.ConnState回调函数

    1. const StateNew 代表一个新的连接,将要立刻发送请求.
    2. const StateActive 代表一个已经读取了请求数据1到多个字节连接.
    3. 用于StateActiveServer.ConnState回调函数在将连接交付给处理器之前触发,等请求被处理完成后,Server.Connstate回调函数再次被触发
    4. const StateIdle 代表一个已经处理完成了请求.处在闲置状态.等待新请求的来接.连接状态可以从StateIdle改变为StateActiveStateClosed
    5. const StateHijacked 代表一个被劫持的链接.这是一个终止状态,不会转变为StateClosed
    6. const StateClosed 代表一个终止状态.被劫持的链接不会被转为StateClosed
  • type Header

    代表HTTP头域的键值对

    • func Get 返回键对应的第一个值,如果不存在则返回””
    • func Set 添加键值到对应的h,如键已存在则会用只有新值一个元素的切片取代旧值切片
    • func Add 添加键值到对应的h,如键已存在则会将新的值附加到旧值切片后面
    • func Del 删除键值对
    • func Write 以有线格式将头域写入w
    • func WriteSubset 以有线格式将头域写入w.当exclude不为nil时,如果h的键值对的键在exclude中存在且其对应值为真,该键值对就不会被写入w
  • type Cookie

    代表一个出现在HTTP回复的头域中Set-Cookie头的值里或者HTTP请求的头域中Cookie头的值里的HTTP请求的cookie

    • func String 返回cookie的序列化结果.如果只设置了Name和value字段,序列化结果可用于HTTP请求的Cookie头或者HTTP回复的Set-Cookie头;如果设置了其他字段,序列化结果中能用于HTTP回复的Set-Cookie头
  • type CookieJar

    管理cookie的存储和在HTTP请求中的使用.CookieJar的实现必须能安全的被多个go程同时使用,net/http/cookiejar包提供了一个CookieJar的实现

    • 实现 interface SetCookies 管理从u的回复中收到的cookie,根据其策略和实现,它可以选择是否存储cookie
    • 实现 interface Cookies 返回发送请求到u时应使用的cookie,本方法有责任遵守RFC 6265规定的标准cookie限制
  • type Request

    代表一个服务端接受到的或者客户端发送出去的HTTP请求,结构体中的各个字段在服务端或客户端中意义和用途是不同的

    • Method 指定HTTP方法(GET/POST/PUT等),对客户端 “”代表GET
    • URL 客户端表示要访问的URL,服务端表示被请求的URI
    • Proto 请求的协议版本 例如: “HTTP/1.0”
    • ProtoMajor 版本 1
    • ProtoMinor 版本 0
    • Header 表示HTTP请求的头域,HTTP规定头域的键名是大小写敏感的.在客户端的请求可能会被自动添加或重写Header中的特定的头
    • Body 响应体/请求体
    • ContentLength 记录相关内容的长度
    • TransferEncoding TransferEncoding按从最外到最里的顺序列出传输编码,空切片表示”identity”编码.本字段一般会被忽略.当发送或者接受请求时,会自动添加或移除”chunked”传输编码.
    • Close Close在服务端指定是否在回复请求后关闭连接,在客户端指定是否发送请求后关闭连接.
    • Host 在服务端,指定URL会在其上寻找资源主机.在客户端,请求的Host字段(可选的)用来重写请求的Host头,如果该字段为””,Request.Write方法会使用URL字段的Host
    • Form 是解析好的表单数据(包括URL字段的query参数和POST或PUT的表单数据).本字段只有在调用ParseForm后才有效.在客户端,会忽略请求中的本字段而使用Body代替
    • PostForm 是解析好的POST或PUT的表单数据.本字段只有在调用ParseForm后才有效.在客户端,会忽略请求中的本字段而使用Body代替.
    • MultipartForm 是解析好的多部件表单,包括上传的文件.本字段只有在调用ParseMultipartForm后才有效.在客户端,会忽略请求中的本字段而使用Body代替
    • Trailer 指定了会在请求主题之后发送的额外的头域.
      1. 在服务端,Trailer字段必须初始化为只有trailer键,所有键都对应nil值.客户端会声明哪些trailer会发送
      2. 在处理器从Body读取时,不能使用本字段.
      3. 在从Body的读取返回EOFTrailer字段会被更新完毕并包含非nil的值.如果看客户的发送了这些键值对,此时才可以访问本字段.
      4. 在客户端,Trailer必须初始化为一个包含将要发送的键值对的映射.(值可以是nil或其终值)
      5. ContentLength字段必须是0或-1,以启用"chunked"传输编码发送请求.
      6. 在开始发送请求后,Trailer可以在读取请求主题期间被修改,
      7. 一旦请求主体返回EOF,调用者就不可再修改Trailer.
      8. 很少有HTTP客户端/服务端或者代理支持HTTP trailer
    • RemoteAddr RemoteAddr允许HTTP服务器和其他软件记录该请求的来源地址,一般用于日志.
      1. 本字段不是ReadRequest函数填写的,也没有定义格式.
      2. 本包的HTTP服务器会在调用处理器之前设置RemoteAddr"IP:port"格式的地址.
      3. 客户端会忽略请求中的RemoteAddr字段
    • RequestURI 是被客户端发送到服务端的请求的请求行中未修改的请求URI,一般应使用URI字段,在客户端设置请求的本字段会导致错误
    • TLS TLS字段允许HTTP服务器和其他软件记录接收到该请求的TLS连接的信息
      1. 本字段不是ReadRequest函数填写的
      2. 对启用了TLS的链接,本包的HTTP服务器会在调用处理器之前设置TLS字段,否则将设TLSnil.
      3. 客户端会忽略请求中的TLS字段
  • func NewRequest

    创建并返回一个新的Request,如果body参数实现了io.Closer接口,Request返回值的Body字段会被设置为body,并会被Client类型的DoPost和DoForm方法以及Transport.RoundTrip方法关闭

  • func ReadRequest

    读取并解析出一个HTTP请求

    • func ProtoAtLeast 报告改请求使用的HTTP协议版本至少是major.minor
    • func Referer 返回请求中的访问来路信息(请求的Referer头)

      1. Referer在请求中就是拼错了的,这是HTTP早期就有的错误.该值也可以从用Header["Referer"]获取;
      2. 让获取Referer字段编程方法的好处是,编译器可以诊断使用正确单词拼法的req.Referrer()的程序,但确不能诊断使用Header["Referrer"]的程序
    • func AddCookie 向请求中添加一个cookie,AddCookie 不会添加超过一个Cookie头字段,如果有多个cookie都写在同一行用cookie内部的逗号分隔
    • func SetBasicAuth 使用提供的用户名和密码,采用HTTP基本认知,设置请求的Authorization头.HTTP基本认证会明码传送用户名和密码
    • func Write 以有线格式将HTTP/1.1请求写入w(用于将请求写入下层TCPConn等)
    • func WriteProxy 类似Write但会将请求以HTTP代理期望的格式发送.
    • func Cookies 解析并返回该请求的Cookie头设置的cookie
    • func Cookie 返回请求中名为name的cookie,如果未找到该cookie会返回nil,ErrNoCookie
    • func ParseForm 解析URL中的查询字符串,并将解析结果更新到r.Form字段
    • func ParseMultipartForm 将请求的主体作为multipart/form-data解析
    • func FormValue 返回key为键查询r.PostForm字段得到结果[]string切片的第一个值,如果必要,本函数会隐式调用ParseMultipartForm和ParseForm
    • func FormFile 返回key为键查询r.MultipartForm字段得到结果中的第一个文件和它的信息
    • func MultipartReader 如果是multipart/form-data POST请求,MultipartReader返回一个multipart.Reader接口,否则返回nil和一个错误
  • type Response

    代表一个HTTP请求的回复

    1. Status 例如"200 OK"
    2. StatusCode 例如200
    3. Proto 例如"HTTP/1.0"
    4. ProtoMajor 例如1
    5. ProtoMinor 例如0
    6. Header 保管头域的键值对
    7. Body 代表回复的主体
    8. ContentLength 记录内容的长度.值为-1表示长度未知
    9. TransferEncoding 按从最外到最里的顺序列出传输编码
    10. Close 记录头域是否指定应在读取完主体后关闭连接
    11. Trailer 保存和头域相同格式的trailer键值对,和Header字段相同类型
    12. Request 是用来获取此回复的请求
    13. TLS 包含接收到该回复的TLS连接信息
    • func ProtoAtLeast 报告该回复使用的HTTP协议版本至少是major.minor
    • func Cookies 解析并返回该回复中的Set-Cookie头设置的cookie
    • func Location 返回该回复的Location头设置的URL.相对地址的重定向会相对于该回复对应的请求来确定绝对地址.如果回复中没有Location头,会返回nil,ErrNoLocation
    • func Write 以有线格式将回复写入w(用于将回复写入下层TCPConn等)
  • func ReadResponse

    从r读取并返回一个HTTP回复,req参数是可选的,指定该回复对应的请求

  • type ResponseWriter

    该接口被HTTP处理器用于构造HTTP回复

    1. Header 返回一个Header类型值,该值会被WriteHeader方法发送.在调用WriteHeaderWrite方法后再改变该对象是没有意义的
    2. WriterHeader 该方法发送HTTP回复的头域和状态码.如果没有被显示盗用,第一次调用Write时会触发隐式调用WriteHeader(http.StatusOK),显示调用主要发送错误码
    3. Write 向连接中写入作为HTTP的一部分回复的数据.如果被调用时还未回调WriteHeader,本方法会先调用WriteHeader(http.StatusOk),如果Header中没有"Content-Type"键,本方法会使用包函数DetectContentType检查数据的前512字节,将返回值作为该键的值
  • type Flusher

    http处理器ResponseWriter接口参数的下层如果实现了Flusher接口,可以让HTTP处理器将缓冲中的数据发送到客户端.注意:即使ResponseWriter接口的下层支持Flush方法,如果客户端是通过HTTP代理连接的,缓冲中的数据也可能直接回复完毕才被传输到客户端

  • type CloseNotifier

    HTTP处理器ResponseWriter接口参数的下层如果实现了CloseNotifier接口,可以让用户检测下层的连接是否停止.如果客户端在回复准备好之前关闭了连接,该机制可以用于取消服务端耗时较长的操作

  • type Hijacker

    HTTP处理器ResponseWriter接口参数的下层如果实现了Hijacker接口,可以让HTTP处理器接管该连接

  • type RoundTripper

    该接口具有执行单次HTTP事务的能力(接收指定请求的回复)的接口.接口的类型必须可以安全的被多线程同时使用

  • type Transport

    Transport类型实现了RoundTripper接口,支持http.https和http/https代理.Transport类型可以缓存连接以在未来重用

    1. Proxy 指定一个对给定请求返回代理的函数.如果该函数返回了非nil的错误值,请求的执行就会中断并返回该错误.如果为nil将不使用代理
    2. Dial 指定创建TCP连接的拨号函数.如果Dialnil,会使用net.Dial
    3. TLSClientConfig 指定用于tls.ClientTLS配置信息.如果该字段为nil,会使用默认的配置信息.
    4. TLSHandshakeTimeout 指定等待TLS握手完成的最长时间.零值表示不设置超时.
    5. DisableKeepAlives 如果为真,会禁止不同HTTP请求直接的TCP连接重用
    6. DisableCompression 如果为真,会禁止Transport在请求中没有Accept-Encoding头时,主动添加"Accept-Encoding:gzip"头,以获取压缩数据.如果Transport自己请求gizp并得到了压缩后的回复,它会主动解压缩回复的主体,但是如果用户显式的请求gzip压缩数据,是不会主动解压缩的.
    7. MaxIdleConnsPerHost 如果MaxIdleConnsPerHost !==0 ,会控制每个主键下的最大闲置连接否则会使用DefaultMaxIdleConnsPerHost
    8. ResponseHeaderTimeout 指定在发送完请求(包括其可能的主体)之后,等待接收服务端的回复的头域的最大时间.零值表示不设置超时.该时间不包括获取回复主体的时间
    • func RegisterProtocol 注册一个新的名为scheme的协议.t会将使用scheme协议的请求转交给rt.rt有责任模拟HTTP请求的语义
    • func RoundTrip 实现了RoundTripper接口.高层次的HTTP客户端支持(如管理cookie和重定向)参见Get.Post等函数和Client类型.
    • func CloseIdleConnections 关闭所有之前的请求建立但目前处于闲置状态的链接.本方法不会中断正在使用的连接.
    • func CancelRequest 通过关闭请求所在的连接取消一个执行中的请求
  • type Client

    代表HTTP客户端,他的零值(DefaultClient)是一个可用的使用DefaultTransport的客户端,该类型的层次币RoundTripper接口高,还会管理HTTP的cookie和重定向等细节

    1. Transport 指定执行独立/单次HTTP请求的机制.如果为nil,则使用DefaultTransport
    2. CheckRedirect 指定重定向的策略
    3. // 如果CheckRedirect不为nil,客户端会在执行重定向之前调用本函数字段.
    4. // 参数req和via是将要执行的请求和已经执行的请求(切片,越新的越靠后)
    5. // 如果CheckRedirect返回一个错误,本类型的Get方法不会发送请求req,
    6. // 而是返回之前得到的最后一个回复和该错误.
    7. // 如果CheckRedirect为nil,会采用默认策略:连续10次请求后停止
    8. Jar 指定cookie管理器
    9. // 如果Jar为nil,请求中不会发送cookie,回复中的cookie会被忽略
    10. Timeout 指定本类型的值执行请求的时间限制.
    • func Do 该方法发送请求,返回HTTP回复.它会遵守客户端c设置的策略(如重定向/cookie/认证).
      1. 如果客户端的策略(如重定向)返回错误或者存在HTTP协议错误时,本方法将返回该错误;如果回应的状态码不是2xx,本方法并不会返回错误
      2. 如果返回值errnil,resp.Body总是非nil的,调用者应该在读取完resp.Body后关闭它.如果返回值resp的主体未关闭,c下层的RoundTripper接口(一般为Transport类型)可能无法重用resp主体下层保持的TCP连接去执行之后的请求
      3. 请求的主体,如果非nil,会在执行后被c.Transport关闭,即使出现错误.
      4. 一般应使用Get/PostPostForm方法代替Do方法
    • func Head Head向指定的URL发出一个HEAD请求,如果回应的状态码在[301,302,303,307]中,Head会在调用c.CheckRedirect后执行重定向
    • func Get 向指定的URL发出一个GET请求,如果回应的状态码在[301,302,303,307]中,GET会在调用c.CheckRedirect后执行重定向
    • func Post 向指定的URL发出一个POST请求.bodyType为POST类型,body为POST数据,作为请求的主体,如果参数body实现了io.Closer接口,它会在发送请求后被关闭.调用者有责任在读取完返回值resp的主体后关闭它
    • func PostForm 向指定的URL发出一个POST请求,url.Values类型的data会被编码为请求的主体.POST数据的数据类型一般会设置为”application/x-www-form-urlencoded”.如果返回值err为nil,resp.Body总是非nil的,调用者应该在读取完resp.Body后关闭它.
  • type Handler

    实现了Handler接口的对象可以注册到HTTP服务端,为特定的路劲及其子树提供服务.

    1. ServeHTTP应将回复的头域和数据写入ResponseWriter接口然后返回.返回标志着该请求已经结束.HTTP服务端可以转移向该连接上一个请求
    • func NotFoundHandler 返回一个简单的请求处理器,该处理器会对每个请求都回复”404 page not found”
    • func RedirectHandler 返回一个请求处理器,该处理器会对每个请求都使用状态码code重定向到网址url
    • func TimeoutHandler 返回一个采用指定时间限制的请求处理器
      1. 返回的Handler会调用h.ServeHTTP去处理每个请求,如果某一次调用耗时超过了时间限制,该处理器会回复请求状态码503 Service Unavailable,并将msg作为回复的主体(如果msg为空字符串,将发送一个合理的默认信息).在超时后,h对它的ResponseWriter接口参数的写入操作会返回ErrHandlerTimeOut.
    • func StripPrefix 返回一个处理器,该处理器会将请求的URL.Path字段中给定前缀prefix去除后再交由h处理,会向URL.Path字段中没有给定前缀的请求回复404 page not found
  • type HandlerFunc

    是一个适配器,通过类型转换让我们可以将普通的函数作为HTTP处理器使用,如果f是一个具有适当签名的函数,HandlerFunc(f)通过调用f实现了Handler接口

    • func ServeHTTP 会调用f(w,r)
  • type ServeMux

    该类型是HTTP请求的多路转接器.它会将每一个接收的请求的URL与一个注册模式的列表进行匹配,并调用和URL最匹配的模式的处理器

    1. 模式是固定的.由根开始的路劲,如"/favicon.ico",或由根开始的子树,如"/images/"(注意结尾的斜杠)
    2. 较长的模式优先于较短的模式,因此如果模式"/images/""/images/thumbnails/"都注册了处理器,后一个处理器会用于路劲以"/images/thumbanails/"开始请求,前一个处理器会接收到其余的路劲在"/images/"子树下的请求.
    3. ServeMux还会注意到请求的URL路劲的无害化,将任何路劲中包含"."".."元素的请求重定向到等价的没有这两个元素的URL
  • fun NewServeMux

    创建并返回一个新的*ServeMux

    • func Handle 注册HTTP处理器的handler和对应的模式pattern.如果该模式已经注册有一个处理器,Handle会panic
    • func HandleFunc 注册一个处理器函数handler和对应模式的pattern
    • func Handler 根据r.Method/r.Host和r.RUL.Path等数据,返回将用于处理该请求的HTTP处理器.
      1. 它总是返回一个非nil的处理器.如果路径不是它的规范格式,将返回内建的用于重定向到等价的规范路劲的处理器.
      2. Handler也会返回匹配该请求的已注册模式;在内建重定向处理器的情况下,pattern会在重定向后进行匹配.
      3. 如果没哟已注册模式可以应用于该请求,本方法将返回一个内建的"404 page not found"处理器和一个空字符串模式.
    • func ServeHTTP 将请求派遣到与请求的URL最匹配的模式对应的处理器.
  • type Server

    Server类型定义了运行HTTP服务端的参数.Server的零值是合法的配置

    1. Addr 监听的TCP地址,如果为空字符串会使用":http"
    2. Handler 调用的处理器,如为nil会调动http.DefaultServeMux
    3. ReadTimeout 请求的读取操作在超时前的最大持续时间
    4. WriteTimeout 回复的写入操作在超时前的最大持续时间
    5. MaxHeaderBytes 请求头域最大长度,如为0则用DefaultMaxHeaderBytes
    6. TLSConfig 可选的TLS配置,用于ListenAndServeTls方法
    7. TLSNextProto (可选的) 指定一个函数来在一个NPN型协议升级出现时接管TLS连接的所有权
    8. ConnState 指定一个可选的回调函数,该函数会在一个与客户端的链接改变状态时被调用.
    9. ErrorLog 指定一个可选的日志记录器,用于记录接收连接时的错误和处理器不正常的行为.
    • func SetKeepAlivesEnabled 控制是否允许HTTP闲置连接重用(keep-alive)功能.默认是启用的,只有资源非常紧张的环境或者服务端在关闭进程中时,才应该关闭该功能
    • func Serve 会接手监听器收到的每一个连接,并为每一个连接创建一个新的服务go程.该go程会读取请求,然后调用srv.handler回复请求.
    • func ListenAndServe 监听srv.Addr指定的TCP地址,并且会调用Serve方法接收到的链接.如果srv.Addr为空字符,会使用”:http”
  • type File interface

    File是被FileSystem接口的Open方法返回的接口类型,可以被FileServer等函数用于文件访问服务.该接口的方法的行为应该和*os.File类型的同名方法相同

  • type FileSytem interface

    FileSystem接口实现了对一系列命名文件的访问.文件路径的分隔符为'/',不管主机操作系统的惯例如何.

  • type Dir string

    Dir使用限制到指定目录树的本地文件系统实现了http.FileSystem接口.空Dir被视为".",即代表当前目录

  • func FileServer

    返回一个使用FileSystem接口root提供文件访问服务的HTTP处理器.要使用操作系统的FileSystem接口实现,可使用http.Dir

  • func ProxyURL

    返回一个代理函数(用于Transport类型),该函数总是返回同一个URL

  • func ProxyFromEnvironment

    使用环境变量$HTTP_PROXY和$NO_PROXY(或$http_proxy和$no_proxy)的配置返回用于req的代理.如果代理环境不合法将返回错误;如果环境未设定代理或者给定的request不应使用代理是,将返回(nil,nil);如果req.URL.Host字段是"localhost"(可以有端口号,也可以没有),也会返回(nil,nil)

  • func SetCookie

    在w的头域中添加Set-Cookie头,该HTTP头的值为cookie

  • func Redirect

    回复请求一个重定向地址urlStr和状态码code.该重定向地址可以是相对于请求r的相对地址

  • func NotFound

    回复请求404状态码

  • func Error

    使用指定的错误信息和状态码回复请求,将数据写入w.错误信息必须是明文



评论 0

发表评论

Top