Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🐛 Unexpected GetRouteURL with param "*" #1921

Closed
martinwang2002 opened this issue May 28, 2022 · 2 comments · Fixed by #1922
Closed

🐛 Unexpected GetRouteURL with param "*" #1921

martinwang2002 opened this issue May 28, 2022 · 2 comments · Fixed by #1922

Comments

@martinwang2002
Copy link

Fiber version
v2.34.0

Issue description
Unexpected other parameters in the result when using * in one of the parameters.

Code snippet

package main

import "github.com/gofiber/fiber/v2"

func main() {
 	app := fiber.New()

	// app := fiber.New(fiber.Config{
	// 	CaseSensitive: true,
	// })

	app.Get("/", func(c *fiber.Ctx) error {

		idUrl, err := c.GetRouteURL("id", fiber.Map{
			"testid": "ABC",
			"*": "def/hij/klm",
		})

		if err != nil {
			panic(err)
		}

		return c.SendString(idUrl)
	})

	app.Get("/:testid/*", func(c *fiber.Ctx) error {
		return c.SendString("Hello, World!\ntestid: " + c.Params("testid") + "\n*:" + c.Params("*"))
	}).Name("id")

	app.Listen(":3000")
}

In this example, when getting /, the expected result should be /ABC/def/hij/klm, while fiber returns /ABC/ABCdef/hij/klm or /ABC/def/hij/klmABC. Fiber may prepend or append all other parameters when using "*" as one of the parameters in GetRouteURL.

@ReneWerner87
Copy link
Member

@sujit-baniya can you check this

@sujit-baniya
Copy link
Contributor

@ReneWerner87 Checking

@sujit-baniya sujit-baniya removed their assignment May 30, 2022
ReneWerner87 added a commit that referenced this issue May 31, 2022
* Add Global Layout for view render

* Add test case for Views Layout

* Update ctx_test.go

* Add App Name function to pass custom app name

* Remove json tag for function

* Change func to string

* Add test for AppName

* Add RedirectToRoute and RedirectBack with fallback if referer in header not found

* replace errors.New with fmt.Errorf

* simplified code

* Add tests for different formats

* Add method to get route location and add benchmarks

* Add ToString function

* Fix error

* rearrange case for fmt.Stringer

* Fix bug for error return

* Lock latest route for app.Name(namee string)

* decreasing timeout for client test with timeout

* remove println and adjust condition to > 0

* Change name to get route url

* Change name to get route url

* Update ctx.go

Co-authored-by: hi019 <65871571+hi019@users.noreply.github.com>

* Fix bug on getting url for optional and greedy params

* Fix greedy pattern

* This PR will fix #1921 (comment).

The optional and greedy params were not fetched correctly

* This PR will fix #1921 (comment).

The optional and greedy params were not fetched correctly

* This PR will fix #1921 (comment).

The optional and greedy params were not fetched correctly

Co-authored-by: RW <rene@gofiber.io>
Co-authored-by: hi019 <65871571+hi019@users.noreply.github.com>
trim21 pushed a commit to trim21/fiber that referenced this issue Aug 15, 2022
* Add Global Layout for view render

* Add test case for Views Layout

* Update ctx_test.go

* Add App Name function to pass custom app name

* Remove json tag for function

* Change func to string

* Add test for AppName

* Add RedirectToRoute and RedirectBack with fallback if referer in header not found

* replace errors.New with fmt.Errorf

* simplified code

* Add tests for different formats

* Add method to get route location and add benchmarks

* Add ToString function

* Fix error

* rearrange case for fmt.Stringer

* Fix bug for error return

* Lock latest route for app.Name(namee string)

* decreasing timeout for client test with timeout

* remove println and adjust condition to > 0

* Change name to get route url

* Change name to get route url

* Update ctx.go

Co-authored-by: hi019 <65871571+hi019@users.noreply.github.com>

* Fix bug on getting url for optional and greedy params

* Fix greedy pattern

* This PR will fix gofiber#1921 (comment).

The optional and greedy params were not fetched correctly

* This PR will fix gofiber#1921 (comment).

The optional and greedy params were not fetched correctly

* This PR will fix gofiber#1921 (comment).

The optional and greedy params were not fetched correctly

Co-authored-by: RW <rene@gofiber.io>
Co-authored-by: hi019 <65871571+hi019@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants