Accéder aux paramètres HTTP POST dans Go

J'ai rencontré un petit problème en essayant de POSTER sur un backend Go en utilisantAxiosmais je n'ai pas pu obtenir les paramètres que j'envoyais.

Je faisais ceci:

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")
    //...
}

mais les deux paramètres que je recherchais n'étaient pas disponibles. Pourquoi?

Il s'avère que je supposais qu'Axios envoyait les paramètres en utilisantContent-Type:application/x-www-form-urlencodedmais par défaut, il utiliseContent-Type:application/json.

Remarque: vous pouvez le configurer pour utiliserapplication/x-www-form-urlencoded, Chèquehttps://github.com/axios/axios#using-applicationx-www-form-urlencoded-format

Cela signifie que pour accéder aux paramètres, je dois les décoder en utilisantjson.Decoder.

Voici un exemple de code qui fait l'affaire:

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">//...

}


Plus de tutoriels go: