package http

import “net/http”
http包提供了HTTP客户端和服务端的实现。
Get、Head、Post和PostForm函数发出HTTP/ HTTPS请求。

func ListenAndServe(addr string, handler Handler) error
ListenAndServe监听TCP地址addr,并且会使用handler参数调用Serve函数处理接收到的连接。handler参数一般会设为nil,此时会使用DefaultServeMux(默认采用多路复用)。

func ListenAndServeTLS(addr string, certFile string, keyFile string, handler Handler) error
ListenAndServeTLS函数和ListenAndServe函数的行为基本一致,除了它期望HTTPS连接之外。此外,必须提供证书文件和对应的私钥文件。如果证书是由权威机构签发的,certFile参数必须是顺序串联的服务端证书和CA证书。如果srv.Addr为空字符串,会使用”:https”。

Handle和HandleFunc函数可以向DefaultServeMux添加处理器。

  1. type Handler interface {
  2. ServeHTTP(ResponseWriter, *Request)
  3. }

实现了Handler接口的对象可以注册到HTTP服务端,为特定的路径及其子树提供服务。
ServeHTTP应该将回复的头域和数据写入ResponseWriter接口然后返回。返回标志着该请求已经结束,HTTP服务端可以转移向该连接上的下一个请求。

  1. package main
  2. import (
  3. "fmt"
  4. "net/http"
  5. )
  6. // 创建处理器函数
  7. func handler(write http.ResponseWriter, request *http.Request) {
  8. fmt.Fprintf(write, "Hello world, %s!", request.URL.Path)
  9. }
  10. func main() {
  11. http.HandleFunc("/", handler)
  12. http.ListenAndServe(":8080", nil)
  13. }