一文搞懂Go快速搭建HTTP服务
【摘要】 第一个http程序:Hello Worldpackage mainimport "net/http"//最简单的HTTP服务func RunHttp1() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Hello Http!")) }) htt...
第一个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()
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)