net/http
golang内置的网络编程库功能已经很强大,但是没有参数解析和(json)类型封装等功能,不区分方法类型,如get。
go
type Response struct {
Code int `json:"code"`
Data any `json:"data"`
Msg string `json:"msg"`
}
func get22(res http.ResponseWriter, req *http.Request) {
// 获取参数
fmt.Println(req.URL.String())
byteData, _ := json.Marshal(Response{
Code: 0,
Data: map[string]any{},
Msg: "成功",
})
res.Write(byteData)
}
func post22(res http.ResponseWriter, req *http.Request) {
// 获取参数,post的请求体
byteData, _ := io.ReadAll(req.Body)
fmt.Println(string(byteData))
byteData, _ = json.Marshal(Response{
Code: 0,
Data: map[string]any{},
Msg: "成功",
})
res.Write(byteData)
}
func main() {
http.HandleFunc("/get33", get22)
http.HandleFunc("/post33", post22)
http.ListenAndServe(":8080", nil)
}
gin
使用net/http封装的web框架,提供简洁的api,支持多种数据格式,适用于构建RESTful API、Web应用等场景。
zinx
使用net中tcp模块封装的web框架,特点是TCP长连接和自定义协议,适用于游戏服务器、实时通讯系统等,可扩展性更大。