Добавить структуру в fasthttp.Args
Я действительно сжигаю мозговую массу, пытаясь вести этот простой разговор, но не могу найти выхода.
Подводя итог, это зацикливание структуры для использования в другой функции.
В волокне я могу разбирать queryParams
type MyStruct struct {
Status string `query:"status"`
Price bool `query:"price"`
Name int `query:"name"`
}
query := new(MyStruct)
if err := c.QueryParser(query); err != nil {
panic("error")
}
На fasthttp у меня есть
args := fasthttp.AcquireArgs()
args.Add(x, y)
Но как перенести эти поля в
*Args
если я не могу перебрать структуру? Я хочу выполнить цикл, потому что я помещу это во вспомогательную функцию, поэтому структура с 15 полями или 3 полями будет делать то, что нужно, без проблем.
Пример всего этого
package main
import (
"fmt"
"log"
"github.com/gofiber/fiber/v2"
"github.com/valyala/fasthttp"
)
func main() {
app := fiber.New()
// Routes
app.Get("/", hello)
log.Fatal(app.Listen(":3003"))
}
type MyStruct struct {
Status string `query:"status"`
Price bool `query:"price"`
Name int `query:"name"`
}
func hello(c *fiber.Ctx) error {
query := new(MyStruct)
if err := c.QueryParser(query); err != nil {
panic("error")
}
args := fasthttp.AcquireArgs()
args.Add("default", "value")
args.Add("x", "y")
// this I want to automate
// args.AddInSomeWay(query)
uri := fasthttp.AcquireURI()
uri.SetHost("mydomain.fake")
uri.SetScheme("https")
uri.SetPath("my/custom/pah")
uri.SetQueryString(args.String())
agent := fiber.AcquireAgent()
req := agent.Request()
// uri.String() => https://mydomain.fake/my/custom/pah?default=value&x=y
req.SetRequestURI(uri.String())
if err := agent.Parse(); err != nil {
panic(err)
}
_, body, _ := agent.String()
return c.SendString(body)
}