7 Days Go Web Framework Gee from Scratch
README 中文版本
func main () {
r := gee .New ()
r .GET ("/" , func (w http.ResponseWriter , req * http.Request ) {
fmt .Fprintf (w , "URL.Path = %q\n " , req .URL .Path )
})
r .GET ("/hello" , func (w http.ResponseWriter , req * http.Request ) {
for k , v := range req .Header {
fmt .Fprintf (w , "Header[%q] = %q\n " , k , v )
}
})
r .Run (":9999" )
}
func main () {
r := gee .New ()
r .GET ("/" , func (c * gee.Context ) {
c .HTML (http .StatusOK , "<h1>Hello Gee</h1>" )
})
r .GET ("/hello" , func (c * gee.Context ) {
// expect /hello?name=geektutu
c .String (http .StatusOK , "hello %s, you're at %s\n " , c .Query ("name" ), c .Path )
})
r .POST ("/login" , func (c * gee.Context ) {
c .JSON (http .StatusOK , & map [string ]string {
"username" : c .PostForm ("username" ),
"password" : c .PostForm ("password" ),
})
})
r .Run (":9999" )
}
func main () {
r := gee .New ()
r .GET ("/" , func (c * gee.Context ) {
c .HTML (http .StatusOK , "<h1>Hello Gee</h1>" )
})
r .GET ("/hello" , func (c * gee.Context ) {
// expect /hello?name=geektutu
c .String (http .StatusOK , "hello %s, you're at %s\n " , c .Query ("name" ), c .Path )
})
r .GET ("/hello/:name" , func (c * gee.Context ) {
// expect /hello/geektutu
c .String (http .StatusOK , "hello %s, you're at %s\n " , c .Param ("name" ), c .Path )
})
r .GET ("/assets/*filepath" , func (c * gee.Context ) {
c .JSON (http .StatusOK , gee.H {"filepath" : c .Param ("filepath" )})
})
r .Run (":9999" )
}
Day 4 - Nesting Group Control