Add an example for gorillamux adaptor. Ref: https://github.com/kataras/iris/issues/588

Former-commit-id: ac5a00ca031950c103764fbb9ea2c3fa498252cb
This commit is contained in:
Gerasimos (Makis) Maropoulos 2017-02-14 06:43:54 +02:00
parent 4968fe353e
commit d2aee5e187
2 changed files with 103 additions and 44 deletions

View File

@ -0,0 +1,60 @@
package main
import (
"gopkg.in/kataras/iris.v6"
"gopkg.in/kataras/iris.v6/adaptors/gorillamux" // import the gorillamux adaptor
)
func main() {
app := iris.New()
app.Adapt(iris.DevLogger()) // writes both prod and dev logs to the os.Stdout
app.Adapt(gorillamux.New()) // uses the gorillamux for routing and reverse routing
// set a custom 404 handler
app.OnError(iris.StatusNotFound, func(ctx *iris.Context) {
ctx.HTML(iris.StatusNotFound, "<h1> custom http error page </h1>")
})
app.Get("/healthcheck", h)
gamesMiddleware := func(ctx *iris.Context) {
println(ctx.Method() + ": " + ctx.Path())
ctx.Next()
}
games := app.Party("/games", gamesMiddleware)
{ // braces are optional of course, it's just a style of code
games.Get("/{gameID:[0-9]+}/clans", h)
games.Get("/{gameID:[0-9]+}/clans/clan/{publicID:[0-9]+}", h)
games.Get("/{gameID:[0-9]+}/clans/search", h)
games.Put("/{gameID:[0-9]+}/players/{publicID:[0-9]+}", h)
games.Put("/{gameID:[0-9]+}/clans/clan/{publicID:[0-9]+}", h)
games.Post("/{gameID:[0-9]+}/clans", h)
games.Post("/{gameID:[0-9]+}/players", h)
games.Post("/{gameID:[0-9]+}/clans/{publicID:[0-9]+}/leave", h)
games.Post("/{gameID:[0-9]+}/clans/{clanPublicID:[0-9]+}/memberships/application", h)
games.Post("/{gameID:[0-9]+}/clans/{clanPublicID:[0-9]+}/memberships/application/:action", h)
games.Post("/{gameID:[0-9]+}/clans/{clanPublicID:[0-9]+}/memberships/invitation", h)
games.Post("/{gameID:[0-9]+}/clans/{clanPublicID:[0-9]+}/memberships/invitation/:action", h)
games.Post("/{gameID:[0-9]+}/clans/{clanPublicID:[0-9]+}/memberships/delete", h)
games.Post("/{gameID:[0-9]+}/clans/{clanPublicID:[0-9]+}/memberships/promote", h)
games.Post("/{gameID:[0-9]+}/clans/{clanPublicID:[0-9]+}/memberships/demote", h)
}
app.Get("/anything/{anythingparameter:.*}", func(ctx *iris.Context) {
s := ctx.Param("anythingparameter")
ctx.Writef("The path after /anything is: %s", s)
})
p := app.Party("mysubdomain.")
// http://mysubdomain.myhost.com/
p.Get("/", h)
app.Listen(":8080")
}
func h(ctx *iris.Context) {
ctx.HTML(iris.StatusOK, "<h1>Path<h1/>"+ctx.Path())
}

17
doc.go
View File

@ -19,7 +19,7 @@
// SOFTWARE. // SOFTWARE.
/* /*
Iris back-end web framework provides efficient and well-designed toolbox with robust set of features to Package iris provides efficient and well-designed toolbox with robust set of features to
create your own perfect high performance web application create your own perfect high performance web application
with unlimited portability using the Go Programming Language. with unlimited portability using the Go Programming Language.
@ -163,12 +163,10 @@ Example `gorillamux` code:
app.Adapt(iris.DevLogger()) app.Adapt(iris.DevLogger())
app.Adapt(gorillamux.New()) app.Adapt(gorillamux.New())
app.OnError(iris.StatusNotFound, func(ctx *iris.Context) {
app.OnError(iris.StatusNotFound, func(ctx *iris.Context){
ctx.HTML(iris.StatusNotFound, "<h1> custom http error page </h1>") ctx.HTML(iris.StatusNotFound, "<h1> custom http error page </h1>")
}) })
app.Get("/healthcheck", h) app.Get("/healthcheck", h)
gamesMiddleware := func(ctx *iris.Context) { gamesMiddleware := func(ctx *iris.Context) {
@ -176,7 +174,7 @@ Example `gorillamux` code:
ctx.Next() ctx.Next()
} }
games:= app.Party("/games", gamesMiddleware) games := app.Party("/games", gamesMiddleware)
{ // braces are optional of course, it's just a style of code { // braces are optional of course, it's just a style of code
games.Get("/{gameID:[0-9]+}/clans", h) games.Get("/{gameID:[0-9]+}/clans", h)
games.Get("/{gameID:[0-9]+}/clans/clan/{publicID:[0-9]+}", h) games.Get("/{gameID:[0-9]+}/clans/clan/{publicID:[0-9]+}", h)
@ -197,14 +195,14 @@ Example `gorillamux` code:
games.Post("/{gameID:[0-9]+}/clans/{clanPublicID:[0-9]+}/memberships/demote", h) games.Post("/{gameID:[0-9]+}/clans/{clanPublicID:[0-9]+}/memberships/demote", h)
} }
app.Get("/anything/{anythingparameter:.*}", func(ctx *iris.Context){ app.Get("/anything/{anythingparameter:.*}", func(ctx *iris.Context) {
s := ctx.Param("anythingparameter") s := ctx.Param("anythingparameter")
ctx.Writef("The path after /anything is: %s",s) ctx.Writef("The path after /anything is: %s", s)
}) })
mysubdomain:= app.Party("mysubdomain.") p := app.Party("mysubdomain.")
// http://mysubdomain.myhost.com/ // http://mysubdomain.myhost.com/
mysudomain.Get("/", h) p.Get("/", h)
app.Listen("myhost.com:80") app.Listen("myhost.com:80")
} }
@ -214,6 +212,7 @@ Example `gorillamux` code:
} }
Example `httprouter` code: Example `httprouter` code: