Olá, Daniel! Entendo que você está com dificuldades em usar o NewDecoder.Decode
na sua API em Go. Vamos tentar entender o que pode ter acontecido.
A função json.NewDecoder(r.Body).Decode(&novaPersonalidade)
é usada para decodificar o corpo da requisição (que deve estar em formato JSON) e armazenar o resultado na variável novaPersonalidade
.
O fato de você não ter recebido nenhum erro e a variável novaPersonalidade
ter ficado vazia pode indicar que o corpo da requisição não estava no formato JSON esperado ou estava vazio.
No entanto, quando você mudou para o Unmarshal
, funcionou perfeitamente. Isso pode ser porque o Unmarshal
lê um slice de bytes, enquanto o NewDecoder
lê de um io.Reader
. Quando você fez ioutil.ReadAll(r.Body)
, você leu todo o corpo da requisição para um slice de bytes, que você então passou para o Unmarshal
.
Se você quiser continuar usando o NewDecoder
, certifique-se de que o corpo da requisição está no formato JSON correto e não está vazio. Aqui está um exemplo de como você pode fazer isso:
var novaPersonalidade models.Personalidade
err := json.NewDecoder(r.Body).Decode(&novaPersonalidade)
if err != nil {
http.Error(w, "Erro ao decodificar o corpo da requisição", http.StatusBadRequest)
return
}
Neste exemplo, eu adicionei uma verificação de erro para o Decode
. Se houver um erro ao decodificar o corpo da requisição, ele retornará um erro 400 para o cliente.
Espero ter ajudado e bons estudos!