Go框架-Web框架 | 青训营笔记

106 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第5天

今天将1月20日课上学习的Go语言框架三件套Web/RPC/ORM进行总结与回顾。

Web框架是为解决Web开发中开放性问题而设计的具有一定约束性的支撑结构,使用Web框架可以快速实现Web开发,并解决开发中遇到的常规问题。HTTP协议是网络协议的一种,HTTP框架则能用于解决对HTTP请求的解析。我们这次学习的是字节跳动研发的Hertz框架。

Hertz框架是字节内部的HTTP框架,参考了其他开源框架的优势,结合字节跳动内部的需求,具有高易用性、高性能、高扩展性的特点。

Hertz框架的基本使用方法为使用New或Default方法创建server,监听端口,进行注册路由函数,最后调用spin方法让服务器保持运行直到启动。Hertz提供了GET、POST、PUT、DELETE、ANY等多种方法用于注册路由,能够用于处理多种HTTP请求。

对于参数,Hertz提供了Bind、Validate、BindAndValidate多种函数用于参数绑定和校验。

Hertz的中间件主要分为客户端中间件和服务端中间件。在通用逻辑中,如数字打印,我们可以使用中间件进行开发。中间件注册在路由、路由组或全局进行设置。

Hertz提供了HTTP Client功能,用于帮助用户发送HTTP请求。通过NewClient方法可以创建Client。

Hertz提供了代码生成工具Hz,通过定义IDL(interface description language)文件即可生成对应的基础服务代码,并且基本调用也会自动封装好。Hz生成的目录结构以main.go为启动文件,router为启动路由,model对应结构体,handler对应函数。

Hertz性能高,其原因在于使用网络库高性能Netpoll,使用高性能Sonic解码Json和底层使用sync.Pool复用对象协议层数据解析优化。

zhuanlan.zhihu.com/p/496421424