簡體   English   中英

go fiber中如何動態解析請求體?

[英]How to dynamically parse request body in go fiber?

我有一個 API 內置 go 光纖。 我正在嘗試將請求正文數據動態解析為鍵值對。

正如我們所知,fiber 有context.Body()context.Bodyparser()方法來執行此操作,但我找不到任何合適的示例來使用這些方法動態執行此操作。

例如:

func handler(c *fiber.Ctx) error {
    req := c.Body()
    fmt.Println(string(req))
    
    return nil
}

output:

key=value&key2=value2&key3&value3

我正在尋找的是一個動態的 json,例如:

{
    key:"value",
    key2:"value2",
    key3:"value3",
}

內容的mime 類型application/x-www-form-urlencoded而不是application/json 要解析,您可以使用net/url.ParseQuery 其結果是一個map[string][]string ,然后您可以輕松地將其轉換為map[string]string ,然后使用encoding/json package 對其進行編組以獲得所需的 JSON output。

func handler(c *fiber.Ctx) error {
    values, err := url.ParseQuery(strings(c.Body()))
    if err != nil {
        return err
    }

    obj := map[string]string{}
    for k, v := range values {
        if len(v) > 0 {
            obj[k] = v[0]
        }
    }

    out, err := json.Marshal(obj)
    if err != nil {
        return err
    }
    
    fmt.Println(string(out))
    return nil
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM