mirror of
https://github.com/kataras/iris.git
synced 2025-12-18 02:17:05 +00:00
new feature: handle different param types in the exact same path pattern
implements https://github.com/kataras/iris/issues/1315 Former-commit-id: 3e9276f2a95d6fc7c10fbf91186d041dcba72611
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
|
||||
func main() {
|
||||
app := iris.New()
|
||||
app.Logger().SetLevel("debug")
|
||||
|
||||
// registers a custom handler for 404 not found http (error) status code,
|
||||
// fires when route not found or manually by ctx.StatusCode(iris.StatusNotFound).
|
||||
@@ -26,6 +27,42 @@ func main() {
|
||||
ctx.Writef(`Same as app.Handle("GET", "/", [...])`)
|
||||
})
|
||||
|
||||
// Different path parameters types in the same path.
|
||||
app.Get("/u/{username:string}", func(ctx iris.Context) {
|
||||
ctx.Writef("before username (string), current route name: %s\n", ctx.RouteName())
|
||||
ctx.Next()
|
||||
}, func(ctx iris.Context) {
|
||||
ctx.Writef("username (string): %s", ctx.Params().Get("username"))
|
||||
})
|
||||
|
||||
app.Get("/u/{id:int}", func(ctx iris.Context) {
|
||||
ctx.Writef("before id (int), current route name: %s\n", ctx.RouteName())
|
||||
ctx.Next()
|
||||
}, func(ctx iris.Context) {
|
||||
ctx.Writef("id (int): %d", ctx.Params().GetIntDefault("id", 0))
|
||||
})
|
||||
|
||||
app.Get("/u/{uid:uint}", func(ctx iris.Context) {
|
||||
ctx.Writef("before uid (uint), current route name: %s\n", ctx.RouteName())
|
||||
ctx.Next()
|
||||
}, func(ctx iris.Context) {
|
||||
ctx.Writef("uid (uint): %d", ctx.Params().GetUintDefault("uid", 0))
|
||||
})
|
||||
|
||||
app.Get("/u/{firstname:alphabetical}", func(ctx iris.Context) {
|
||||
ctx.Writef("before firstname (alphabetical), current route name: %s\n", ctx.RouteName())
|
||||
ctx.Next()
|
||||
}, func(ctx iris.Context) {
|
||||
ctx.Writef("firstname (alphabetical): %s", ctx.Params().Get("firstname"))
|
||||
})
|
||||
|
||||
/*
|
||||
/u/abcd maps to :alphabetical (if :alphabetical registered otherwise :string)
|
||||
/u/42 maps to :uint (if :uint registered otherwise :int)
|
||||
/u/-1 maps to :int (if :int registered otherwise :string)
|
||||
/u/abcd123 maps to :string
|
||||
*/
|
||||
|
||||
app.Get("/donate", donateHandler, donateFinishHandler)
|
||||
|
||||
// Pssst, don't forget dynamic-path example for more "magic"!
|
||||
@@ -128,6 +165,11 @@ func main() {
|
||||
// http://localhost:8080/api/users/blabla
|
||||
// http://localhost:8080/wontfound
|
||||
//
|
||||
// http://localhost:8080/u/abcd
|
||||
// http://localhost:8080/u/42
|
||||
// http://localhost:8080/u/-1
|
||||
// http://localhost:8080/u/abcd123
|
||||
//
|
||||
// if hosts edited:
|
||||
// http://v1.localhost:8080
|
||||
// http://v1.localhost:8080/api/users
|
||||
|
||||
Reference in New Issue
Block a user