Forráskód Böngészése

Merge branch 'master' of https://github.com/ngerakines/gin into ngerakines-master

It adds MustGet() method in context.

Conflicts:
	examples/example_basic.go
Manu Mtz-Almeida 11 éve
szülő
commit
8f3f3597f3
3 módosított fájl, 22 hozzáadás és 18 törlés
  1. 7 7
      README.md
  2. 1 1
      examples/example_basic.go
  3. 14 10
      gin.go

+ 7 - 7
README.md

@@ -284,14 +284,14 @@ func main() {
 func Logger() gin.HandlerFunc {
     return func(c *gin.Context) {
         t := time.Now()
-        
+
         // Set example variable
         c.Set("example", "12345")
-        
+
         // before request
-        
+
         c.Next()
-        
+
         // after request
         latency := time.Since(t)
         log.Print(latency)
@@ -305,10 +305,10 @@ func Logger() gin.HandlerFunc {
 func main() {
     r := gin.New()
     r.Use(Logger())
-    
+
     r.GET("/test", func(c *gin.Context){
-        example := r.Get("example").(string)
-        
+        example := c.MustGet("example").(string)
+
         // it would print: "12345"
         log.Println(example)
     })

+ 1 - 1
examples/example_basic.go

@@ -38,7 +38,7 @@ func main() {
 	}))
 
 	authorized.POST("admin", func(c *gin.Context) {
-		user := c.Get(gin.AuthUserKey).(string)
+		user := c.MustGet(gin.AuthUserKey).(string)
 
 		// Parse JSON
 		var json struct {

+ 14 - 10
gin.go

@@ -355,20 +355,24 @@ func (c *Context) Set(key string, item interface{}) {
 	c.Keys[key] = item
 }
 
-// Returns the value for the given key.
-// It panics if the value doesn't exist.
-func (c *Context) Get(key string) interface{} {
-	var ok bool
-	var item interface{}
+// Get returns the value for the given key or an error if the key does not exist.
+func (c *Context) Get(key string) (interface{}, error) {
 	if c.Keys != nil {
-		item, ok = c.Keys[key]
-	} else {
-		item, ok = nil, false
+		item, ok := c.Keys[key]
+		if ok {
+			return item, nil
+		}
 	}
-	if !ok || item == nil {
+	return nil, errors.New("Key does not exist.")
+}
+
+// MustGet returns the value for the given key or panics if the value doesn't exist.
+func (c *Context) MustGet(key string) interface{} {
+	value, err := c.Get(key)
+	if err != nil || value == nil {
 		log.Panicf("Key %s doesn't exist", key)
 	}
-	return item
+	return value
 }
 
 /************************************/