mirror of
https://github.com/gin-gonic/gin.git
synced 2026-01-08 23:37:05 +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