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

This commit is contained in:
Manu Mtz-Almeida 2014-07-08 14:39:02 +02:00
commit 6b6ec5be77
5 changed files with 26 additions and 11 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
Godeps/*
!Godeps/Godeps.json

10
Godeps/Godeps.json generated Normal file
View File

@ -0,0 +1,10 @@
{
"ImportPath": "github.com/gin-gonic/gin",
"GoVersion": "go1.3",
"Deps": [
{
"ImportPath": "github.com/julienschmidt/httprouter",
"Rev": "7deadb6844d2c6ff1dfb812eaa439b87cdaedf20"
}
]
}

View File

@ -84,20 +84,22 @@ func main() {
```go ```go
func main() { func main() {
r := gin.Default() r := gin.Default()
// This handler will match /user/john but will not match neither /user/ or /user
r.GET("/user/:name", func(c *gin.Context) { r.GET("/user/:name", func(c *gin.Context) {
name := c.Params.ByName("name") name := c.Params.ByName("name")
message := "Hello "+name message := "Hello "+name
c.String(200, message) c.String(200, message)
}) })
r.GET("/user/:name/:action", func(c *gin.Context) { // However, this one will match /user/john and also /user/john/send
r.GET("/user/:name/*action", func(c *gin.Context) {
name := c.Params.ByName("name") name := c.Params.ByName("name")
action := c.Params.ByName("action") action := c.Params.ByName("action")
message := name + " is " + action message := name + " is " + action
c.String(200, message) c.String(200, message)
}) })
// Listen and server on 0.0.0.0:8080 // Listen and server on 0.0.0.0:8080
r.Run(":8080") r.Run(":8080")
} }

15
gin.go
View File

@ -17,12 +17,13 @@ import (
) )
const ( const (
AbortIndex = math.MaxInt8 / 2 AbortIndex = math.MaxInt8 / 2
MIMEJSON = "application/json" MIMEJSON = "application/json"
MIMEHTML = "text/html" MIMEHTML = "text/html"
MIMEXML = "application/xml" MIMEXML = "application/xml"
MIMEXML2 = "text/xml" MIMEXML2 = "text/xml"
MIMEPlain = "text/plain" MIMEPlain = "text/plain"
MIMEPOSTForm = "application/x-www-form-urlencoded"
) )
const ( const (
@ -413,7 +414,7 @@ func (c *Context) Bind(obj interface{}) bool {
var b binding.Binding var b binding.Binding
ctype := filterFlags(c.Req.Header.Get("Content-Type")) ctype := filterFlags(c.Req.Header.Get("Content-Type"))
switch { switch {
case c.Req.Method == "GET": case c.Req.Method == "GET" || ctype == MIMEPOSTForm:
b = binding.Form b = binding.Form
case ctype == MIMEJSON: case ctype == MIMEJSON:
b = binding.JSON b = binding.JSON

View File

@ -69,7 +69,7 @@ func Logger() HandlerFunc {
latency := end.Sub(start) latency := end.Sub(start)
stdlogger.Printf("[GIN] %v |%s %3d %s| %12v | %s %4s %s\n", stdlogger.Printf("[GIN] %v |%s %3d %s| %12v | %s %4s %s\n",
end.Format("2006/01/02 - 15:04:05"), end.Format("2006/01/02 - 15:04:05"),
color, c.Writer.Status(), reset, color, code, reset,
latency, latency,
requester, requester,
c.Req.Method, c.Req.URL.Path, c.Req.Method, c.Req.URL.Path,