第一种方式 – 实现Handle接口
package main
import (
"fmt"
"net/http"
)
type myHandle struct {
}
type myOtherHandle struct {
}
func (mh *myOtherHandle)ServeHTTP(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "second 服务器返回")
}
func (mh *myHandle) ServeHTTP(w http.ResponseWriter, r * http.Request) {
fmt.Fprintln(w, "first 服务器返回")
}
func main() {
myHandler := myHandle{}
m2 := myOtherHandle{}
server := http.Server{
Addr: "localhost:8899",
}
http.Handle("/first", &myHandler)
http.Handle("/second", &m2)
server.ListenAndServe()
}
二. 第二种方式实现ServerHTTP函数
package main
import (
"fmt"
"net/http"
)
type myHandle struct {
}
type myOtherHandle struct {
}
func (mh *myOtherHandle)ServeHTTP(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "second 服务器返回")
}
func (mh *myHandle) ServeHTTP(w http.ResponseWriter, r * http.Request) {
fmt.Fprintln(w, "first 服务器返回")
}
func first(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "first返回")
}
func second(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "second返回")
}
func main() {
myHandler := myHandle{}
m2 := myOtherHandle{}
server := http.Server{
Addr: "localhost:8899",
}
http.Handle("/first", &myHandler)
http.Handle("/second", &m2)
server.ListenAndServe()
}
三. 获取请求头信息
package main
import (
"fmt"
"net/http"
)
func first(w http.ResponseWriter, r *http.Request) {
h := r.Header
fmt.Fprintln(w, h)
fmt.Fprintln(w, h["Accept-Encoding"][0])
fmt.Fprintln(w, len(h["Accept-Encoding"]))
}
func main() {
server := http.Server{
Addr: "localhost:8899",
}
http.HandleFunc("/first", first)
http.HandleFunc("/second", second)
server.ListenAndServe()
}
四. 获得请求参数
package main
import (
"fmt"
"net/http"
)
func first(w http.ResponseWriter, r *http.Request) {
r.ParseForm()
fmt.Fprintln(w, r.Form)
fmt.Fprintln(w, r.Form["name"][0])
fmt.Fprintln(w, r.FormValue("name"))
}
func main() {
server := http.Server{
Addr: "localhost:8899",
}
http.HandleFunc("/first", first)
server.ListenAndServe()
}
五. GET请求
package main
import (
"fmt"
"io/ioutil"
"net/http"
"os"
"strings"
)
type myStruct struct {
}
var (
client = http.Client{}
)
func (my *myStruct)getData(){
url := "http://localhost:8899/hello/a?id=1&name=zhouhaixin"
r, err := http.NewRequest("GET", url, strings.NewReader("yy=k"))
if err != nil {
fmt.Println("解析错误")
os.Exit(1)
return
}
res, err :=client.Do(r)
if err != nil {
fmt.Println("请求错误")
}
data, err := ioutil.ReadAll(res.Body)
fmt.Println(string(data))
}
func main() {
my := &myStruct{}
my.getData()
}
POST请求
func (my *myStruct)postData() {
url := "http://localhost:8899/hello/a"
req, err := http.NewRequest("POST", url, strings.NewReader("age=19&isBig=big"))
if err != nil {
fmt.Println("输入错误")
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}