如何使用戈朗的光纤获取查询字符串?

我的代码

   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=eEND 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=eEND RAW

我想要的是 a=b&b=x&d=e 作为字符串或作为一个 json 对象。然而!此字符串没有固定的格式。它可能很容易是 blah=123&blah2=234。或 x=1&某项=某值

我能找到的所有文档都涉及将查询字符串转换为结构。此服务需要做的就是将查询字符串转换为 json 并将其写入磁盘。如果我删除 ?,我可以使用 Params('*') 来获取它,但是路径是有问题的,因为我还需要单词“/event/”。该值也是任意的。此服务只是将其写入磁盘并返回 200。

但是我不知道如何使用戈兰的Fiber获取查询字符串。有办法吗?如果没有,是否有其他性能方法来获取此内容?


哆啦的时光机
浏览 74回答 2
2回答

慕运维8079593

fiber使用。fasthttphttps://pkg.go.dev/github.com/gofiber/fiber/v2#Requesthttps://pkg.go.dev/github.com/valyala/fasthttp#RequestCtx.URIpackage mainimport (&nbsp; &nbsp; "fmt"&nbsp; &nbsp; "log"&nbsp; &nbsp; "github.com/gofiber/fiber/v2")func main() {&nbsp; &nbsp; app := fiber.New()&nbsp; &nbsp; app.Get("/", func (c *fiber.Ctx) error {&nbsp; &nbsp; &nbsp; &nbsp; fmt.Println(string(c.Request().URI().QueryString()))&nbsp; &nbsp; &nbsp; &nbsp; return c.SendString("Hello, World!")&nbsp; &nbsp; })&nbsp; &nbsp; log.Fatal(app.Listen(":3000"))}

牧羊人nacy

您可以简单地使用app.Get("/",&nbsp;func(c&nbsp;*fiber.Ctx)&nbsp;{ &nbsp;&nbsp;queryValue&nbsp;:=&nbsp;c.Query("param_key") })如这里所述
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go