go的web服务器框架

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长连接和自定义协议,适用于游戏服务器、实时通讯系统等,可扩展性更大。

相关推荐
hanyi_qwe9 小时前
文本三剑客--awk
linux·运维·服务器
liu****10 小时前
27.epoll(三)
服务器·开发语言·网络·tcp/ip·udp
云飞云共享云桌面10 小时前
如何降低非标自动化工厂的研发软件采购成本
运维·服务器·网络·数据库·性能优化·自动化
泰克教育官方账号10 小时前
泰涨知识 | 什么是自动化巡检?
运维·服务器·数据库
le serein —f11 小时前
用go实现-反转链表
leetcode·链表·golang
怀旧,11 小时前
【Linux系统编程】7. 进程的概念(上)
linux·运维·服务器
7***n7511 小时前
API网关设计模式
linux·服务器·设计模式
zzzsde13 小时前
【Linux】基础开发工具(1):软件包管理器&&vim编辑器
linux·运维·服务器
席万里13 小时前
关于Go的init函数执行顺序#黑魔法
开发语言·网络·golang
橘子真甜~13 小时前
C/C++ Linux网络编程6 - poll解决客户端并发连接问题
服务器·c语言·开发语言·网络·c++·poll