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
|
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 ************/
|
/************ INPUT DATA ************/
|
||||||
/************************************/
|
/************************************/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user