mirror of
https://github.com/kataras/iris.git
synced 2025-01-23 02:31:04 +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) {
|
||||
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) {
|
||||
|
@ -76,3 +80,10 @@ func catsVersionExactly1Handler(ctx iris.Context) {
|
|||
func catsV2Handler(ctx iris.Context) {
|
||||
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"
|
||||
)
|
||||
|
||||
// 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.
|
||||
// One version per one or more routes.
|
||||
type Group struct {
|
||||
router.Party
|
||||
API
|
||||
|
||||
// Information not currently in-use.
|
||||
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.
|
||||
|
||||
return &Group{
|
||||
Party: r,
|
||||
API: r,
|
||||
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.
|
||||
g.deprecation = options
|
||||
|
||||
g.Party.UseOnce(func(ctx *context.Context) {
|
||||
g.API.UseOnce(func(ctx *context.Context) {
|
||||
WriteDeprecated(ctx, options)
|
||||
ctx.Next()
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue
Block a user