如何使用 Golang Fiber 获取查询字符串?
How do I get the querystring using Golang's Fiber?
我的代码
app.Get("/event/*", func(c *fiber.Ctx) error {
// GET THE ACCOUNT FROM THE PATH
fmt.Println("PATH")
fmt.Println(c.Path())
fmt.Println("END PATH")
fmt.Printf("%+v\n", c)
fmt.Println("END PERCENT V")
msg := fmt.Sprintf("%s\n", c.Params("*"))
fmt.Println(msg)
fmt.Println("END PARAMS *")
fmt.Println(c.Body())
fmt.Println("END BODY")
fmt.Println(c)
fmt.Println("END RAW")
我称之为
curl 'localhost:3000/event/?a=b&b=c&d=e'
我的输出
PATH
/event/
END PATH
#0000000100000001 - 127.0.0.1:3000 <-> 127.0.0.1:46890 - GET http://localhost:3000/event/?a=b&b=c&d=e
END PERCENT V
END PARAMS *
[]
END BODY
#0000000100000001 - 127.0.0.1:3000 <-> 127.0.0.1:46890 - GET http://localhost:3000/event/?a=b&b=c&d=e
END RAW
我想要的是
a=b&b=x&d=e 作为字符串或作为 json 对象。然而!这个字符串没有固定的格式。它可以很容易地成为 blah=123&blah2=234。或 x=1&somekey=somevalue
我能找到的所有文档都涉及将查询字符串转换为结构。该服务需要做的就是将查询字符串转换为 json 并将其写入磁盘。如果我删除 ?,我可以使用 Params('*') 来获取它,但是路径有问题,因为我还需要单词“/event/”。而且这个值也是任意的。该服务只是将其写入磁盘和 return 200.
但我不知道如何使用 golang 的 Fiber 获取查询字符串。有办法吗?如果没有,是否有其他一些高效的方法来获得它?
fiber
使用 fasthttp
.
- https://pkg.go.dev/github.com/gofiber/fiber/v2#Request
- https://pkg.go.dev/github.com/valyala/fasthttp#RequestCtx.URI
package main
import (
"fmt"
"log"
"github.com/gofiber/fiber/v2"
)
func main() {
app := fiber.New()
app.Get("/", func (c *fiber.Ctx) error {
fmt.Println(string(c.Request().URI().QueryString()))
return c.SendString("Hello, World!")
})
log.Fatal(app.Listen(":3000"))
}
您可以简单地使用
app.Get("/", func(c *fiber.Ctx) {
queryValue := c.Query("param_key")
})
如前所述here
我的代码
app.Get("/event/*", func(c *fiber.Ctx) error {
// GET THE ACCOUNT FROM THE PATH
fmt.Println("PATH")
fmt.Println(c.Path())
fmt.Println("END PATH")
fmt.Printf("%+v\n", c)
fmt.Println("END PERCENT V")
msg := fmt.Sprintf("%s\n", c.Params("*"))
fmt.Println(msg)
fmt.Println("END PARAMS *")
fmt.Println(c.Body())
fmt.Println("END BODY")
fmt.Println(c)
fmt.Println("END RAW")
我称之为
curl 'localhost:3000/event/?a=b&b=c&d=e'
我的输出
PATH
/event/
END PATH
#0000000100000001 - 127.0.0.1:3000 <-> 127.0.0.1:46890 - GET http://localhost:3000/event/?a=b&b=c&d=e
END PERCENT V
END PARAMS *
[]
END BODY
#0000000100000001 - 127.0.0.1:3000 <-> 127.0.0.1:46890 - GET http://localhost:3000/event/?a=b&b=c&d=e
END RAW
我想要的是 a=b&b=x&d=e 作为字符串或作为 json 对象。然而!这个字符串没有固定的格式。它可以很容易地成为 blah=123&blah2=234。或 x=1&somekey=somevalue
我能找到的所有文档都涉及将查询字符串转换为结构。该服务需要做的就是将查询字符串转换为 json 并将其写入磁盘。如果我删除 ?,我可以使用 Params('*') 来获取它,但是路径有问题,因为我还需要单词“/event/”。而且这个值也是任意的。该服务只是将其写入磁盘和 return 200.
但我不知道如何使用 golang 的 Fiber 获取查询字符串。有办法吗?如果没有,是否有其他一些高效的方法来获得它?
fiber
使用 fasthttp
.
- https://pkg.go.dev/github.com/gofiber/fiber/v2#Request
- https://pkg.go.dev/github.com/valyala/fasthttp#RequestCtx.URI
package main
import (
"fmt"
"log"
"github.com/gofiber/fiber/v2"
)
func main() {
app := fiber.New()
app.Get("/", func (c *fiber.Ctx) error {
fmt.Println(string(c.Request().URI().QueryString()))
return c.SendString("Hello, World!")
})
log.Fatal(app.Listen(":3000"))
}
您可以简单地使用
app.Get("/", func(c *fiber.Ctx) {
queryValue := c.Query("param_key")
})
如前所述here