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"
|
||||
)
|
||||
|
||||
func main() {
|
||||
func newApp() *iris.Application {
|
||||
app := iris.New()
|
||||
v1 := app.Party("/api/v1")
|
||||
|
||||
|
@ -15,7 +15,8 @@ func main() {
|
|||
}
|
||||
|
||||
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()
|
||||
}
|
||||
|
||||
|
@ -43,6 +44,12 @@ func main() {
|
|||
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?admin=true
|
||||
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.
|
||||
currIdx := ctx.HandlerIndex(-1)
|
||||
currHandlers := ctx.Handlers()
|
||||
|
||||
if currIdx == len(currHandlers)-1 {
|
||||
// if this is the last handler of the chain
|
||||
// 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
|
||||
}
|
||||
// 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.Next()
|
||||
return
|
||||
|
|
Loading…
Reference in New Issue
Block a user