rest框架概览
我们先通过 go-zero
自带的命令行工具 goctl
来生成一个 api service
,其 main
函数如下:
func main() {
flag.Parse()
var c config.Config
conf.MustLoad(*configFile, &c)
ctx := svc.NewServiceContext(c)
server := rest.MustNewServer(c.RestConf)
defer server.Stop()
handler.RegisterHandlers(server, ctx)
fmt.Printf("Starting server at %s:%d...\n", c.Host, c.Port)
server.Start()
}
-
解析配置文件
-
将配置文件传入,初始化
serviceContext
-
初始化
rest server
- 将
context
注入server
中:-
注册路由
-
将
context
中的启动的endpoint
同时注入到router
当中
-
-
启动
server
接下来我们来一步步讲解其设计原理!Let's Go!
web框架
从日常开发经验来说,一个好的 web 框架大致需要满足以下特性:
-
路由匹配/多路由支持
-
支持自定义中间件
-
框架和业务开发完全解耦,方便开发者快速开发
-
参数校验/匹配
-
监控/日志/指标等服务自查功能
-
服务自保护(熔断/限流)