diff --git a/context.go b/context.go index 178379b8..026920c4 100644 --- a/context.go +++ b/context.go @@ -8,11 +8,12 @@ import ( "bytes" "errors" "fmt" + "log" + "net/http" + "github.com/gin-gonic/gin/binding" "github.com/gin-gonic/gin/render" "github.com/julienschmidt/httprouter" - "log" - "net/http" ) const ( @@ -187,6 +188,16 @@ func (c *Context) MustGet(key string) interface{} { return value } +// GetDefault returns the value for the given key or a default value if the key does not exist. +func (c *Context) GetDefault(key string, defaultVal interface{}) interface{} { + item, err := c.Get(key) + if err != nil { + return defaultVal + } + + return item +} + /************************************/ /******** ENCOGING MANAGEMENT********/ /************************************/ diff --git a/context_test.go b/context_test.go index 6df824cb..0b575a1e 100644 --- a/context_test.go +++ b/context_test.go @@ -54,6 +54,17 @@ func TestContextSetGet(t *testing.T) { if v != "bar" { t.Errorf("Value should be bar, was %s", v) } + + // GetDefault + v = c.GetDefault("foo", "baz") + if v != "bar" { + t.Errorf("Value should be bar, was %s", v) + } + + v = c.GetDefault("badKey", "baz") + if v != "baz" { + t.Errorf("Value should be baz, was %s", v) + } }) r.ServeHTTP(w, req)