package icshttp import ( "net/http" ) type Router struct { handlers map[string]map[string]http.HandlerFunc //[method][pattern] } func NewRouter() *Router { return &Router{make(map[string]map[string]http.HandlerFunc)} } func (r *Router) ServeHTTP(w http.ResponseWriter, req *http.Request) { if m, ok := r.handlers[req.Method]; ok { if h, ok := m[req.URL.Path]; ok { h(w, req) return } } http.NotFound(w, req) } //register http handler function func (r *Router) HandleFunc(method, pattern string, h http.HandlerFunc) { v, ok := r.handlers[method] if !ok { v = make(map[string]http.HandlerFunc) r.handlers[method] = v } v[pattern] = h } //{"Text":"aaabbb"},{"Speaker_Name":"JJ"}