Acceder a los parámetros HTTP POST en Go

Me encontré con un pequeño problema cuando intenté PUBLICAR en un backend de Go usandoAxiospero no pude obtener los parámetros que estaba enviando.

Estaba haciendo esto:

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

pero los dos parámetros que estaba buscando no estaban disponibles. ¿Por qué?

Resulta que estaba asumiendo que Axios envió los parámetros usandoContent-Type:application/x-www-form-urlencodedpero por defecto está usandoContent-Type:application/json.

Nota: puede configurarlo para usarapplication/x-www-form-urlencoded, controlarhttps://github.com/axios/axios#using-applicationx-www-form-urlencoded-format

Esto significa que para acceder a los parámetros necesito decodificarlos usandojson.Decoder.

Aquí hay un código de muestra que hace el truco:

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

}


Más tutoriales de go: