第一个http程序:Hello World
package main
import "net/http"
//最简单的HTTP服务
func RunHttp1() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello Http!"))
})
http.ListenAndServe(":8080", nil)
}
func main() {
RunHttp1()
}
PostMan测试:
一般请求
一般参数请求:
package main
import (
"fmt"
"net/http"
)
func GetMethod1() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
//获取参数
str := r.URL.Query().Get("str")
fmt.Println("Get Method Str is " + str)
w.Write([]byte("Hello Http Get!"))
})
http.ListenAndServe(":8080", nil)
}
func main() {
GetMethod1()
}
测试:
表单请求
package main
import (
"fmt"
"net/http"
"strconv"
)
type Student struct {
Name string
Age int
}
func GetMethod2() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
//获取参数
name := r.URL.Query().Get("name")
age := r.URL.Query().Get("age")
//将string类型转为int类型
ageStr, err := strconv.Atoi(age)
if err != nil {
fmt.Println("err...")
}
stu := Student{Name: name, Age: ageStr}
fmt.Println("Get Method Str is ", stu)
w.Write([]byte("Hello Http Get Form!"))
})
http.ListenAndServe(":8080", nil)
}
func main() {
GetMethod2()
}
JSON格式的HTTP报文
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
//自定义结构体 对应JSON结构体
type Student struct {
Id int64 `json:"id"`
Name string `json:"name"`
Age int `json:"age"`
}
func TakeJSON() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
//获取请求方法
fmt.Println("req method : ", r.Method)
//获取请求题
body, err := ioutil.ReadAll(r.Body)
if err != nil {
fmt.Printf("获取请求体错误 , %v\n", err)
return
}
fmt.Println("请求体 :", string(body))
//将请求的JSON转化为结构体
var stu Student
if err = json.Unmarshal(body, &stu); err != nil {
fmt.Printf("反序列化失败 , %v\n", err)
return
}
fmt.Printf("反序列化成功,JSON解析结果 %+v", stu)
w.Write([]byte("Hello Http Get Form!"))
})
http.ListenAndServe(":8080", nil)
}
func main() {
TakeJSON()
}