If you want to use the encoded path

This commit is contained in:
jaceshim 2016-06-09 16:57:16 +09:00
parent 233291e4e2
commit 0f10af7246
2 changed files with 18 additions and 4 deletions

6
.idea/vcs.xml generated Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

16
gin.go
View File

@ -14,7 +14,7 @@ import (
"github.com/gin-gonic/gin/render"
)
// Framework's version
// Version is Framework's version
const Version = "v1.0rc2"
var default404Body = []byte("404 page not found")
@ -78,6 +78,9 @@ type (
// handler.
HandleMethodNotAllowed bool
ForwardedByClientIP bool
// If enabled, the path using RawPath in net.url.URL.RawPath
// RawPath dose not decode path.
UseRawPath bool
}
)
@ -102,6 +105,7 @@ func New() *Engine {
HandleMethodNotAllowed: false,
ForwardedByClientIP: true,
trees: make(methodTrees, 0, 9),
UseRawPath: false,
}
engine.RouterGroup.engine = engine
engine.pool.New = func() interface{} {
@ -147,19 +151,19 @@ func (engine *Engine) SetHTMLTemplate(templ *template.Template) {
engine.HTMLRender = render.HTMLProduction{Template: templ}
}
// Adds handlers for NoRoute. It return a 404 code by default.
// NoRoute adds handlers for NoRoute. It return a 404 code by default.
func (engine *Engine) NoRoute(handlers ...HandlerFunc) {
engine.noRoute = handlers
engine.rebuild404Handlers()
}
// Sets the handlers called when... TODO
// NoMethod sets the handlers called when... TODO
func (engine *Engine) NoMethod(handlers ...HandlerFunc) {
engine.noMethod = handlers
engine.rebuild405Handlers()
}
// Attachs a global middleware to the router. ie. the middleware attached though Use() will be
// Use attachs a global middleware to the router. ie. the middleware attached though Use() will be
// included in the handlers chain for every single request. Even 404, 405, static files...
// For example, this is the right place for a logger or error management middleware.
func (engine *Engine) Use(middleware ...HandlerFunc) IRoutes {
@ -270,6 +274,10 @@ func (engine *Engine) ServeHTTP(w http.ResponseWriter, req *http.Request) {
func (engine *Engine) handleHTTPRequest(context *Context) {
httpMethod := context.Request.Method
path := context.Request.URL.Path
if (engine.UseRawPath && len(context.Request.URL.RawPath) > 0 ) {
path = context.Request.URL.RawPath
}
// Find root of the tree for the given HTTP method
t := engine.trees