mirror of
https://github.com/kataras/iris.git
synced 2025-01-23 10:41:03 +01:00
parent
10f280af63
commit
c558e039d5
|
@ -4,7 +4,7 @@ import (
|
||||||
"github.com/kataras/iris/v12"
|
"github.com/kataras/iris/v12"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func newApp() *iris.Application {
|
||||||
app := iris.New()
|
app := iris.New()
|
||||||
v1 := app.Party("/api/v1")
|
v1 := app.Party("/api/v1")
|
||||||
|
|
||||||
|
@ -15,7 +15,8 @@ func main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
onlyWhenFilter1 := func(ctx iris.Context) {
|
onlyWhenFilter1 := func(ctx iris.Context) {
|
||||||
ctx.Application().Logger().Infof("admin: %s", ctx.Params())
|
ctx.Application().Logger().Infof("admin: %#+v", ctx.URLParams())
|
||||||
|
ctx.Writef("<title>Admin</title>\n")
|
||||||
ctx.Next()
|
ctx.Next()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,6 +44,12 @@ func main() {
|
||||||
ctx.HTML("requested: <b>/api/v1/users</b>")
|
ctx.HTML("requested: <b>/api/v1/users</b>")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
return app
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
app := newApp()
|
||||||
|
|
||||||
// http://localhost:8080/api/v1/users
|
// http://localhost:8080/api/v1/users
|
||||||
// http://localhost:8080/api/v1/users?admin=true
|
// http://localhost:8080/api/v1/users?admin=true
|
||||||
app.Run(iris.Addr(":8080"))
|
app.Run(iris.Addr(":8080"))
|
||||||
|
|
17
_examples/routing/conditional-chain/main_test.go
Normal file
17
_examples/routing/conditional-chain/main_test.go
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/kataras/iris/v12/httptest"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestNewConditionalHandler(t *testing.T) {
|
||||||
|
app := newApp()
|
||||||
|
e := httptest.New(t, app)
|
||||||
|
|
||||||
|
e.GET("/api/v1/users").Expect().Status(httptest.StatusOK).
|
||||||
|
Body().Equal("requested: <b>/api/v1/users</b>")
|
||||||
|
e.GET("/api/v1/users").WithQuery("admin", "true").Expect().Status(httptest.StatusOK).
|
||||||
|
Body().Equal("<title>Admin</title>\n<h1>Hello Admin</h1><br>requested: <b>/api/v1/users</b>")
|
||||||
|
}
|
|
@ -90,6 +90,7 @@ func NewConditionalHandler(filter Filter, handlers ...Handler) Handler {
|
||||||
// to check and modify the per-request handlers chain at runtime.
|
// to check and modify the per-request handlers chain at runtime.
|
||||||
currIdx := ctx.HandlerIndex(-1)
|
currIdx := ctx.HandlerIndex(-1)
|
||||||
currHandlers := ctx.Handlers()
|
currHandlers := ctx.Handlers()
|
||||||
|
|
||||||
if currIdx == len(currHandlers)-1 {
|
if currIdx == len(currHandlers)-1 {
|
||||||
// if this is the last handler of the chain
|
// if this is the last handler of the chain
|
||||||
// just add to the last the new handlers and call Next to fire those.
|
// just add to the last the new handlers and call Next to fire those.
|
||||||
|
@ -98,7 +99,7 @@ func NewConditionalHandler(filter Filter, handlers ...Handler) Handler {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// otherwise insert the new handlers in the middle of the current executed chain and the next chain.
|
// otherwise insert the new handlers in the middle of the current executed chain and the next chain.
|
||||||
newHandlers := append(currHandlers[:currIdx], append(handlers, currHandlers[currIdx+1:]...)...)
|
newHandlers := append(currHandlers[:currIdx+1], append(handlers, currHandlers[currIdx+1:]...)...)
|
||||||
ctx.SetHandlers(newHandlers)
|
ctx.SetHandlers(newHandlers)
|
||||||
ctx.Next()
|
ctx.Next()
|
||||||
return
|
return
|
||||||
|
|
Loading…
Reference in New Issue
Block a user