第一个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测试:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XAWs0Gpa-1639888646018)(一文搞懂Go快速搭建HTTP服务.assets/image-20211212103712537.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XAWs0Gpa-1639888646018)(一文搞懂Go快速搭建HTTP服务.assets/image-20211212103712537.png)]](https://ucc.alicdn.com/images/user-upload-01/ca06c33e43d3489f9d4c0d25ad732fdf.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA546p5a625ZCN5a2X5YWt5L2N,size_20,color_FFFFFF,t_70,g_se,x_16)
一般请求
一般参数请求:
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()
}