Empty Request Body in Gin/Golang
Ao lidar com solicitações POST com Gin, você pode ocasionalmente encontrar um problema em que o corpo da solicitação parece estar vazio. Isto pode ser frustrante, especialmente se você espera receber dados do cliente. Um motivo comum para esse problema é a tentativa de imprimir o corpo diretamente.
Gin representa o corpo da solicitação como um tipo de interface ReadCloser. No entanto, imprimir o valor da string desta interface não revelará o conteúdo real do corpo. leia o corpo em uma string e depois imprima-o:
func events(c *gin.Context) { x, _:=ioutil.ReadAll(c.Request.Body) fmt.Printf("%s", string(x)) c.JSON(http.StatusOK, c) }
No entanto, esta não é a abordagem recomendada, pois consome o conteúdo do corpo.func events(c *gin.Context) {
x, _ := ioutil.ReadAll(c.Request.Body)
fmt.Printf("%s", string(x))
c.JSON(http.StatusOK, c)
}
A forma preferida de acessar o corpo da solicitação no Gin deve usar ligações. Gin fornece ligações integradas para formatos de dados comuns, como JSON. Ao definir uma estrutura para representar os dados esperados e, em seguida, usar c.Bind, você pode analisar e vincular automaticamente o corpo à sua estrutura:
type E struct { Sequência de eventos } eventos func(c *gin.Context) { dados := &E{} c.Bind(dados) fmt.Println(dados) c.JSON(http.StatusOK, c) }
Essa abordagem garante que o corpo da solicitação seja analisado corretamente e acessado por meio de sua estrutura definida.type E struct {
Events string
}
func events(c *gin.Context) {
data := &E{}
c.Bind(data)
fmt.Println(data)
c.JSON(http.StatusOK, c)
}
Ler o corpo da solicitação manualmente antes vinculá-lo a uma estrutura consumirá o conteúdo do corpo. Isso significa que as chamadas subsequentes para c.Bind falharão. Portanto, é importante usar a técnica de leitura de string apenas para fins de depuração (não recomendado) ou usar ligações para acessar o corpo de maneira consistente.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3