mirror of
https://github.com/kataras/iris.git
synced 2025-01-23 10:41:03 +01:00
make versioning.Group a Party compatible by using a type alias on its embedded field
was reported as missing of the a Party method, the type alias is a good hack to solve that
This commit is contained in:
parent
8b710b1302
commit
7aa2d1f9d5
|
@ -67,6 +67,10 @@ func examplePerParty(app *iris.Application) {
|
||||||
usersAPIV2.Post("/", func(ctx iris.Context) {
|
usersAPIV2.Post("/", func(ctx iris.Context) {
|
||||||
ctx.Writef("v2 resource: /api/users post handler")
|
ctx.Writef("v2 resource: /api/users post handler")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// version 3, pass it as a common iris.Party.
|
||||||
|
usersAPIV3 := versioning.NewGroup(usersAPI, ">= 3, < 4")
|
||||||
|
registerAPIV3(usersAPIV3)
|
||||||
}
|
}
|
||||||
|
|
||||||
func catsVersionExactly1Handler(ctx iris.Context) {
|
func catsVersionExactly1Handler(ctx iris.Context) {
|
||||||
|
@ -76,3 +80,10 @@ func catsVersionExactly1Handler(ctx iris.Context) {
|
||||||
func catsV2Handler(ctx iris.Context) {
|
func catsV2Handler(ctx iris.Context) {
|
||||||
ctx.Writef("v2 resource: /api/cats handler")
|
ctx.Writef("v2 resource: /api/cats handler")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func registerAPIV3(p iris.Party) {
|
||||||
|
p.Get("/", func(ctx iris.Context) {
|
||||||
|
ctx.Writef("v3 resource: /api/users handler")
|
||||||
|
})
|
||||||
|
// [...]
|
||||||
|
}
|
||||||
|
|
|
@ -5,10 +5,15 @@ import (
|
||||||
"github.com/kataras/iris/v12/core/router"
|
"github.com/kataras/iris/v12/core/router"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// API is a type alias of router.Party.
|
||||||
|
// This is required in order for a Group instance
|
||||||
|
// to implement the Party interface without field conflict.
|
||||||
|
type API = router.Party
|
||||||
|
|
||||||
// Group is a group of version-based routes.
|
// Group is a group of version-based routes.
|
||||||
// One version per one or more routes.
|
// One version per one or more routes.
|
||||||
type Group struct {
|
type Group struct {
|
||||||
router.Party
|
API
|
||||||
|
|
||||||
// Information not currently in-use.
|
// Information not currently in-use.
|
||||||
version string
|
version string
|
||||||
|
@ -32,7 +37,7 @@ func NewGroup(r router.Party, version string) *Group {
|
||||||
r.UseOnce(Handler(version)) // this is required in order to not populate this middleware to the next group.
|
r.UseOnce(Handler(version)) // this is required in order to not populate this middleware to the next group.
|
||||||
|
|
||||||
return &Group{
|
return &Group{
|
||||||
Party: r,
|
API: r,
|
||||||
version: version,
|
version: version,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,7 +48,7 @@ func (g *Group) Deprecated(options DeprecationOptions) *Group {
|
||||||
// store it for future use, e.g. collect all deprecated APIs and notify the developer.
|
// store it for future use, e.g. collect all deprecated APIs and notify the developer.
|
||||||
g.deprecation = options
|
g.deprecation = options
|
||||||
|
|
||||||
g.Party.UseOnce(func(ctx *context.Context) {
|
g.API.UseOnce(func(ctx *context.Context) {
|
||||||
WriteDeprecated(ctx, options)
|
WriteDeprecated(ctx, options)
|
||||||
ctx.Next()
|
ctx.Next()
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue
Block a user