diff --git a/_examples/sessions/database/badger/main.go b/_examples/sessions/database/badger/main.go index cc245629..d49c1dbb 100644 --- a/_examples/sessions/database/badger/main.go +++ b/_examples/sessions/database/badger/main.go @@ -24,6 +24,18 @@ func main() { defer db.Close() // close and unlock the database if application errored. + // The default transcoder is the JSON one, + // based on the https://golang.org/pkg/encoding/json/#Unmarshal + // you can only retrieve numbers as float64 types: + // * bool, for booleans + // * float64, for numbers + // * string, for strings + // * []interface{}, for arrays + // * map[string]interface{}, for objects. + // If you want to save the data per go-specific types + // you should change the DefaultTranscoder to the GobTranscoder one: + // sessions.DefaultTranscoder = sessions.GobTranscoder{} + sess := sessions.New(sessions.Config{ Cookie: "sessionscookieid", Expires: 1 * time.Minute, // <=0 means unlimited life. Defaults to 0. diff --git a/_examples/sessions/overview/example/example.go b/_examples/sessions/overview/example/example.go index 8f2015d3..f7312c4a 100644 --- a/_examples/sessions/overview/example/example.go +++ b/_examples/sessions/overview/example/example.go @@ -77,9 +77,29 @@ func NewApp(sess *sessions.Sessions) *iris.Application { session := sessions.Get(ctx) // get a specific key, as string, if no found returns just an empty string key := ctx.Params().Get("key") - name := session.GetString(key) + value := session.Get(key) - ctx.Writef("The name on the /set was: %s", name) + ctx.Writef("The [%s:%T] on the /set was: %v", key, value, value) + }) + + app.Get("/set/{type}/{key}/{value}", func(ctx iris.Context) { + session := sessions.Get(ctx) + + key := ctx.Params().Get("key") + var value interface{} + + switch ctx.Params().Get("type") { + case "int": + value = ctx.Params().GetIntDefault("value", 0) + case "float64": + value = ctx.Params().GetFloat64Default("value", 0.0) + default: + value = ctx.Params().Get("value") + } + session.Set(key, value) + + value = session.Get(key) + ctx.Writef("Key: %s, Type: %T, Value: %v", key, value, value) }) app.Get("/delete", func(ctx iris.Context) {