当前位置: 首页 > article >正文

go的web服务器框架

net/http

golang内置的网络编程库功能已经很强大,但是没有参数解析和(json)类型封装等功能,不区分方法类型,如get。

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

  1. 使用net/http封装的web框架,提供简洁的api,支持多种数据格式,适用于构建RESTful API、Web应用等场景。

zinx

  1. 使用net中tcp模块封装的web框架,特点是TCP长连接和自定义协议,适用于游戏服务器、实时通讯系统等,可扩展性更大。
  2. zinx采用的消息格式是TLV(type,len,value)。
    • 网络中传输的数据都要序列化
    • type和len构成消息head,value构成消息body
    • head的长度是固定的,len是body的长度

http://www.kler.cn/news/366695.html

相关文章:

  • ACL访问控制
  • 校园表白墙源码修复版
  • 使用 docker 的方式部署 NFS server 提供文件共享能力
  • 软件测试人员必问的十大面试题..
  • 大一物联网要不要转专业,转不了该怎么办?
  • 个性化头像新选择:A1快速定制你的专属头像
  • 南京林业大学生态学博士在1区top期刊揭示人工林发育促进土壤团聚体的形成与稳定:对土壤碳氮固存的启示
  • 多端项目开发全流程详解 - 从需求分析到多端部署
  • C语言 | Leetcode C语言题解之第508题斐波那契数
  • 24. Lammps命令学习-系统定义部分总结
  • MySQL-日志
  • qt QWidget详解
  • LeetCode刷题日记之贪心算法(五)
  • Vim 编辑器从入门到入土
  • Ubuntu安装repo
  • 基于plc的楼宇自动化控制系统(开题报告)
  • 构建高效房屋租赁平台:SpringBoot应用案例
  • 07_Linux网络配置与管理:命令与工具指南
  • 【华为HCIP实战课程二十一】OSPF区域间汇总配置详解,网络工程师
  • Linux命令笔记
  • jenkins 自动化部署Springboot 项目
  • 物联网数据采集网关详细介绍-天拓四方
  • 跨境支付,哪些国产数据库能接得住?
  • 为什么要使用网络IO内存数据库?
  • 名词(术语)了解--柯里化(Currying)
  • spark读取parquet文件