mirror of
https://github.com/gin-gonic/gin.git
synced 2025-10-16 13:22:09 +08:00
achieve #1866
```go package main import ( "fmt" "github.com/gin-gonic/gin" "time" ) func main() { r := gin.Default() r.GET("/:int/:string/:float/:bool/:duration", func(c *gin.Context) { var i int var err error err = c.ParamVar("int", &i) fmt.Printf("%v, %v\n", i, err) var b bool err = c.ParamVar("bool", &b) fmt.Printf("%v, %v\n", b, err) var f float64 err = c.ParamVar("float", &f) fmt.Printf("%v, %v\n", f, err) var s string err = c.ParamVar("string", &s) fmt.Printf("%v, %v\n", s, err) var d time.Duration err = c.ParamVar("duration", &d) fmt.Printf("%v, %v\n", d, err) }) r.Run() return } // client // curl -X GET 127.0.0.1:8080/1/test/3.14/true/1s ```
This commit is contained in:
parent
9e03cea269
commit
b4e2ca4585
25
context.go
25
context.go
@ -328,6 +328,31 @@ func (c *Context) GetStringMapStringSlice(key string) (smss map[string][]string)
|
||||
return
|
||||
}
|
||||
|
||||
// ParamVar get the value of the URL param.
|
||||
// curl -X GET 127.0.0.1:8080/1/test/3.14/true/1s
|
||||
//
|
||||
// router.GET("/:int/:string/:float/:bool/:duration", func(c *gin.Context) {
|
||||
// var i int
|
||||
// var b bool
|
||||
// var f float64
|
||||
// var s string
|
||||
// var d time.Duration
|
||||
|
||||
// err = c.ParamVar("int", &i) // int == 1
|
||||
// err = c.ParamVar("bool", &b) // bool == true
|
||||
// err = c.ParamVar("float", &f) // float == 3.14
|
||||
// err = c.ParamVar("string", &s) // string == test
|
||||
// err = c.ParamVar("duration", &d) // duration == time.Second
|
||||
// })
|
||||
func (c *Context) ParamVar(key string, val interface{}) error {
|
||||
rv := reflect.ValueOf(val)
|
||||
if rv.Kind() != reflect.Ptr || rv.IsNil() {
|
||||
return errors.New("Invalid parameter")
|
||||
}
|
||||
|
||||
return binding.SetValue(rv, rv.Elem(), []string{c.Param(key)}, true)
|
||||
}
|
||||
|
||||
/************************************/
|
||||
/************ INPUT DATA ************/
|
||||
/************************************/
|
||||
|
Loading…
x
Reference in New Issue
Block a user