乐趣区

深入理解gin-framework二

gin flow 分析

  • Handler 是如何注册和传递的?路由是如何解析的?http 方法又是如何处理,使其满足 RESTful 规范的?这些细节都需要深入到代码层面来分析

辅助功能

  • 既然是框架,自然会处理各种项目中共性的问题,比如说 404 Not Found。这部分框架的功能不是分析的重点。

启动 http 服务

  • 在深入理解 gin framework(一)的例子中,由 r.Run(“:14000”) 启动 http 服务。这里只能传入空值或者一个地址,否则会报错。源码如下,空值时默认端口为 8080.

  • 启动 http server 的 Run 函数,TLS 相似,只不过是加了个证书。其实还是把 address 传给官方标准包 http 的 ListenAndServe 函数,此处的 engine struct 只需要实现 Handler 接口,也就是实现 ServeHTTP 函数即可。

  • engine struct 中的 pool 就是 sync.Pool,代码中可以看出来,每处理一个 http 请求,都会从连接池里边取出一个 Context,把请求参数传递给这个 Context,处理完之后,再把这个 Context 放回去。

处理 http 请求

  • 从上边的源码可以看出来,所有的 http 请求都会走到 handleHTTPRequest 函数中去处理。
  • (未完待续)
退出移动版