package gee import "net/http" type HandlerFunc func(*Context) type Engine struct { router *router } // New 实例化Engine func New() *Engine { return &Engine{router: newRouter()} } // addRoute 添加路由规则 func (engine *Engine) addRoute(method string, pattern string, handler HandlerFunc) { engine.router.addRoute(method, pattern, handler) } // GET 添加GET路由规则 func (engine *Engine) GET(pattern string, handler HandlerFunc) { engine.addRoute("GET", pattern, handler) } // POST 添加POST路由规则 func (engine *Engine) POST(pattern string, handler HandlerFunc) { engine.addRoute("POST", pattern, handler) } // Run 启动服务 func (engine *Engine) Run(addr string) (err error) { return http.ListenAndServe(addr, engine) } // ServeHTTP 实现了ServeHTTP接口 func (engine *Engine) ServeHTTP(w http.ResponseWriter, r *http.Request) { c := newContext(w, r) engine.router.handle(c) }