From 194200e67109bee9f78e3bdd93224e2e4d822368 Mon Sep 17 00:00:00 2001 From: Jihun Kim Date: Thu, 15 Oct 2026 19:24:07 +0900 Subject: [PATCH] feat(group): add Prefix --- group.go | 6 ++++++ group_test.go | 13 +++++++++++++ 2 files changed, 19 insertions(+) diff --git a/group.go b/group.go index 311eba047..5ad31ce46 100644 --- a/group.go +++ b/group.go @@ -23,6 +23,12 @@ type Group struct { noAutoRegisterRoutes bool } +// Prefix returns the group's path prefix, including any parent group prefixes. +// The prefix is returned as stored, without path normalization. +func (g *Group) Prefix() string { + return g.prefix +} + // Use implements `Echo#Use()` for sub-routes within the Group. // // Important! Group middlewares are executed in case there was no exact route match as by default Group registers diff --git a/group_test.go b/group_test.go index a357fad68..90239c138 100644 --- a/group_test.go +++ b/group_test.go @@ -15,6 +15,19 @@ import ( "github.com/stretchr/testify/assert" ) +func TestGroup_Prefix(t *testing.T) { + e := New() + parent := e.Group("/v1") + child := parent.Group("/users") + + assert.Equal(t, "/v1", parent.Prefix()) + assert.Equal(t, "/v1/users", child.Prefix()) + assert.Equal(t, "", e.Group("").Prefix()) + assert.Equal(t, "/v1", parent.Group("").Prefix()) + assert.Equal(t, "/v1users", parent.Group("users").Prefix()) + assert.Equal(t, "/v1/", parent.Group("/").Prefix()) +} + func TestGroup_withoutRouteWillExecuteMiddleware(t *testing.T) { e := New()