第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何從此請(qǐng)求中獲取 POST 值?

如何從此請(qǐng)求中獲取 POST 值?

Go
哈士奇WWW 2023-05-04 17:00:45
我有以下代碼:package mainimport (    "bytes"    "fmt"    "net/http")func main() {    var jsonStr = []byte(`{"title":"Buy cheese and bread for breakfast."}`)    req, err := http.NewRequest("POST", "/", bytes.NewBuffer(jsonStr))    if err != nil {        panic(err)    }    req.Header.Set("X-Custom-Header", "myvalue")    req.Header.Set("Content-Type", "application/json")    req.ParseForm()    fmt.Printf("%v:%v", "title", req.Form.Get("title"))}我無(wú)法提取“標(biāo)題”參數(shù),也不知道為什么。
查看完整描述

3 回答

?
當(dāng)年話(huà)下

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊

正如該方法的GoDoc 中http.Request.ParseForm所述,正文的類(lèi)型必須是?application/x-www-form-urlencoded,而不是像當(dāng)前示例那樣的 JSON:

對(duì)于其他 HTTP 方法,或者當(dāng) Content-Type 不是 application/x-www-form-urlencoded 時(shí),不會(huì)讀取請(qǐng)求 Body,并且 r.PostForm 被初始化為一個(gè)非 nil 的空值。

如果您想從 JSON 正文中提取值,可以使用諸如 之類(lèi)的方法來(lái)完成json.Unmarshal,但是 JSON 正文并不代表表單。


查看完整回答
反對(duì) 回復(fù) 2023-05-04
?
萬(wàn)千封印

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊

的第三個(gè)參數(shù)http.NewRequest是 http 負(fù)載。


在您的情況下,有效負(fù)載類(lèi)型是application/json. 它需要被視為 json,只有這樣你才能從中獲得一定的價(jià)值。在這種情況下,我們不能使用與從查詢(xún)字符串或表單數(shù)據(jù)中獲取值相同的技術(shù)。


所以只需將jsonStr數(shù)據(jù)解組為映射或結(jié)構(gòu)。


res := make(map[string]interface{})

err := json.Unmarshal(jsonStr, &res)

if err != nil {

    panic(err)

}

fmt.Printf("%#v \n", res["title"])

老實(shí)說(shuō),我對(duì)你的問(wèn)題很困惑,為什么你需要從 http 客戶(hù)端請(qǐng)求中獲取有效負(fù)載。


如果你真正想要的是如何從web服務(wù)器端獲取payload,你可以通過(guò)解碼請(qǐng)求體來(lái)獲取。例子:


http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {

    payload := make(map[string]interface{})

    err := json.NewDecoder(r.Body).Decode(&payload)

    if err != nil {

        http.Error(w, err.Error(), http.StatusInternalServerError)

        return

    }


    title := payload["title"].(string)

    w.Write([]byte(title))

})

卷曲示例(基于您的代碼):


curl -d '{"title":"Buy cheese and bread for breakfast."}' \

     -H "Content-Type: application/json" \

     -X POST http://localhost:9000

輸出:


Buy cheese and bread for breakfast.


查看完整回答
反對(duì) 回復(fù) 2023-05-04
?
明月笑刀無(wú)情

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊

因?yàn)槟恼?qǐng)求不是表格。它沒(méi)有任何 GET 參數(shù),也不是表單編碼數(shù)據(jù)。

對(duì)于其他 HTTP 方法,或者當(dāng) Content-Type 不是 application/x-www-form-urlencoded 時(shí),不會(huì)讀取請(qǐng)求 Body,并且 r.PostForm 被初始化為一個(gè)非 nil 的空值。

您可以自由地將請(qǐng)求的主體解析為,但這與表單數(shù)據(jù)?application/json不同。


查看完整回答
反對(duì) 回復(fù) 2023-05-04
  • 3 回答
  • 0 關(guān)注
  • 163 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)