GoでHTTPPOSTパラメーターにアクセスする

を使用してGoバックエンドにPOSTしようとしたときに、小さな問題が発生しましたAxiosしかし、送信していたパラメータを取得できませんでした。

私はこれをやっていた:

func handleReq(w http.ResponseWriter, req *http.Request) {
	err := req.ParseForm()
	if err != nil {
		panic(err)
	}
	v := req.Form
	owner := req.Form.Get("owner")
	name := req.Form.Get("name")
    //...
}

しかし、私が探していた2つのパラメーターは利用できませんでした。どうして?

Axiosがを使用してパラメータを送信したと想定していたことが判明しましたContent-Type:application/x-www-form-urlencodedデフォルトでは使用していますContent-Type:application/json

注:使用するように構成できますapplication/x-www-form-urlencoded、 小切手https://github.com/axios/axios#using-applicationx-www-form-urlencoded-format

これは、パラメータにアクセスするには、を使用してそれらをデコードする必要があることを意味しますjson.Decoder

トリックを実行するサンプルコードを次に示します。

type myData struct {
	Owner string
	Name  string
}

func handleAddNewRepo(w http.ResponseWriter, req *http.Request) { decoder := json.NewDecoder(req.Body)

<span style="color:#66d9ef">var</span> <span style="color:#a6e22e">data</span> <span style="color:#a6e22e">myData</span>
<span style="color:#a6e22e">err</span> <span style="color:#f92672">:=</span> <span style="color:#a6e22e">decoder</span>.<span style="color:#a6e22e">Decode</span>(<span style="color:#f92672">&amp;</span><span style="color:#a6e22e">data</span>)
<span style="color:#66d9ef">if</span> <span style="color:#a6e22e">err</span> <span style="color:#f92672">!=</span> <span style="color:#66d9ef">nil</span> {
	panic(<span style="color:#a6e22e">err</span>)
}

<span style="color:#a6e22e">owner</span> <span style="color:#f92672">:=</span> <span style="color:#a6e22e">data</span>.<span style="color:#a6e22e">Owner</span>
<span style="color:#a6e22e">name</span> <span style="color:#f92672">:=</span> <span style="color:#a6e22e">data</span>.<span style="color:#a6e22e">Name</span>
<span style="color:#75715e">//...

}


その他のチュートリアル: