I enter my source code with golang book. My source code is same with my golang book's source code
check the source code
-------golang--------
package main
import (
"fmt"
"net/http"
)
func main() {
r := &router{make(map[string]map[string]HandlerFunc)}
r.HandleFunc("GET", "/", func(c *Context) {
fmt.Fprintln(c.ResponseWriter, "welcome!")
})
r.HandleFunc("GET", "/about", func(c *Context) {
fmt.Fprintln(c.ResponseWriter, "about")
})
r.HandleFunc("GET", "/users/:id", func(c *Context) {
fmt.Fprintf(c.ResponseWriter, "retrieve user %v
",
c.Params["id"])
})
r.HandleFunc("GET", "/users/:user_id/addresses/:address_id", func(c *Context) {
fmt.Fprintf(c.ResponseWriter, "retrieve user %v's address %v
",
c.Params["user_id"], c.Params["address_id"])
})
r.HandleFunc("POST", "/users", func(c *Context) {
fmt.Fprintf(c.ResponseWriter, "create user
")
})
r.HandleFunc("POST", "/users/:user_id/addresses", func(c *Context) {
fmt.Fprintf(c.ResponseWriter, "create user %v's address
", c.Params["user_id"])
})
http.ListenAndServe(":8080", r)
}
PS C:\Users\user\go> curl http://localhost:8080/users/1 curl : 404 page not found At line:1 char:1 + curl http://localhost:8080/users/1 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
when you define your uri for HandlerFunc, parameters must go between {}
/users/{id} instead of /users/:id