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函数中去处理。
  • (未完待续)