41 lines
920 B
Go
41 lines
920 B
Go
|
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)
|
||
|
}
|