Add and fix the explanation of `HandleContext` (#1371)

Reference this issue #1323 

1. There isn't any eg about `HandleContext`  
2. The `c.Request.Path`  of `HandleContext` Comment  is not right   

Based on the above two points, I pull this request.  
If you think it's unnecessary, I will close this.  
Thx.
This commit is contained in:
chainhelen 2018-05-30 09:19:04 +08:00 committed by Bo-Yi Wu
parent bf7803815b
commit 07cbe116a0
2 changed files with 15 additions and 3 deletions

View File

@ -1082,14 +1082,26 @@ Gin allow by default use only one html.Template. Check [a multitemplate render](
### Redirects ### Redirects
Issuing a HTTP redirect is easy: Issuing a HTTP redirect is easy. Both internal and external locations are supported.
```go ```go
r.GET("/test", func(c *gin.Context) { r.GET("/test", func(c *gin.Context) {
c.Redirect(http.StatusMovedPermanently, "http://www.google.com/") c.Redirect(http.StatusMovedPermanently, "http://www.google.com/")
}) })
``` ```
Both internal and external locations are supported.
Issuing a Router redirect, use `HandleContext` like below.
``` go
r.GET("/test", func(c *gin.Context) {
c.Request.URL.Path = "/test2"
r.HandleContext(c)
})
r.GET("/test2", func(c *gin.Context) {
c.JSON(200, gin.H{"hello": "world"})
})
```
### Custom Middleware ### Custom Middleware

2
gin.go
View File

@ -329,7 +329,7 @@ func (engine *Engine) ServeHTTP(w http.ResponseWriter, req *http.Request) {
} }
// HandleContext re-enter a context that has been rewritten. // HandleContext re-enter a context that has been rewritten.
// This can be done by setting c.Request.Path to your new target. // This can be done by setting c.Request.URL.Path to your new target.
// Disclaimer: You can loop yourself to death with this, use wisely. // Disclaimer: You can loop yourself to death with this, use wisely.
func (engine *Engine) HandleContext(c *Context) { func (engine *Engine) HandleContext(c *Context) {
c.reset() c.reset()