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

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

Golang 休息 api 和卷曲

Golang 休息 api 和卷曲

Go
白衣非少年 2023-05-08 15:16:45
我想使用 curl 測(cè)試我的 golang rest api。我曾經(jīng)這樣做的命令:curl -X POST -H "Content-Type: application/json" -d '{"username":"username","password":"password"}' "http://localhost:8000/api/rooms/signin"我寫的簡(jiǎn)化版服務(wù)器package mainimport (    "fmt"    "log"    "net/http"    "github.com/gorilla/mux")func main() {    fmt.Println("Listening on port 8000")    router := mux.NewRouter()    router.HandleFunc("/api/rooms/signin", Signin)    log.Fatal(http.ListenAndServe(":8000", router))}func Signin(w http.ResponseWriter, r *http.Request) {    if r.Method == "POST" {        fmt.Println("POST")        if err := r.ParseForm(); err != nil {            fmt.Println("parsing failed")            return        }        fmt.Println("parsing success")        fmt.Println(r.Form)        fmt.Println("path: ", r.URL.Path)        fmt.Println("scheme: ", r.URL.Scheme)        username := r.FormValue("username")        password := r.FormValue("password")        fmt.Println(username)        fmt.Println(password)        fmt.Println("username:", r.Form["username"])        fmt.Println("password:", r.Form["password"])        return    }}問題是我得到一個(gè)空表格——這是我得到的輸出Listening on port 8000POSTparsing successmap[]path:  /api/rooms/signinscheme:  username: []password: []我想這是不對(duì)的,但我想不出我可能做錯(cuò)了什么。預(yù)期的輸出是將“密碼”和“用戶名”字符串作為 golang 服務(wù)器的輸出。
查看完整描述

1 回答

?
莫回?zé)o

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

正如評(píng)論中所指出的,您接受的是 JSON 有效負(fù)載而不是 POST 表單。這里有一個(gè)小片段可以幫助您處理 JSON,盡管 Internet 上有很多。


func Signin(w http.ResponseWriter, r *http.Request) {


    body, err := ioutil.ReadAll(r.Body)

    if err != nil {

        // error handling

    }


    params := make(map[string]string)

    err = json.Unmarshal(body, &params)

    if err != nil {

        // error handling

    }


    fmt.Println("username:", params["username"])

    fmt.Println("password:", params["password"])


}

我建議創(chuàng)建一個(gè)具體的結(jié)構(gòu)而不是一個(gè)map[string]stringeg


type SigninBody struct {

    Username string `json:"username"`

    Password string `json:"password"`

}

然后json.Unmarshal像這樣傳遞它:


var signinBody SinginBody

err = json.Unmarshal(body, &signinBody)

這是一個(gè)快速的游樂場(chǎng)


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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