Skip to content

Bug: wrong context ParamNames #1306

Closed
Closed
@mrLSD

Description

@mrLSD

Go vesion: latest
Echo version: latest

Code:

package main

import (
	"fmt"
	"github.com/labstack/echo/v4"
	"github.com/labstack/echo/v4/middleware"
	"github.com/labstack/gommon/log"
	"net/http"
)

func main() {
	e := echo.New()
	e.Use(middleware.Logger())
	e.Use(middleware.Recover())

	e.Logger.SetLevel(log.INFO)

	e.GET("/test", func(c echo.Context) error {
		return c.String(http.StatusOK, "GET /test")
	}).Name = "get-test"
	e.GET("/test/:test", func(c echo.Context) error {
		fmt.Printf("%#v\n", c.ParamValues())
		fmt.Printf("%#v\n", c.ParamNames()) // return []string{"test"}
		return c.String(http.StatusOK, "GET /test/:test=" + c.Param("test"))
	}).Name = "get-list-test"
	e.PUT("/test/:id", func(c echo.Context) error {
		fmt.Printf("%#v\n", c.ParamValues())
		fmt.Printf("%#v\n", c.ParamNames()) // return []string{"test"}
		return c.String(http.StatusOK, "PUT /test/:id=" + c.Param("id"))
	}).Name = "put-test"

	e.Logger.Fatal(e.Start(":3000"))
}

And requests:

$ curl  -X GET   http://localhost:3000/test/test
GET /test/:test=test

$ curl  -X PUT   http://localhost:3000/test/test
PUT /test/:id=

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions