5๐
โ
As @mkopriva stated axios
does send as json
but echo
looks for x-www-form-urlencoded
. In your vue
add axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'
or pass the header in each axios.post
In echo you can c.Bind
the request into your variable like below. That way you can receive json
or form
(postman for testing and vue
)
type SignUpForm struct {
Username string `json:"username" form:"username" query:"username"`
Email string `json:"email" form:"email" query:"email"`
Password string `json:"password" form:"password" query:"password"`
}
func SignUp(c echo.Context) error {
form := new(SignUpForm)
if err := c.Bind(form); err != nil {
return c.JSON(http.StatusBadRequest, err)
}
user := models.User{
Username: form.Username,
Email: form.Email,
Password: models.HashPassword(form.Password),
}
log.Printf("#####################")
values, _ := c.FormParams()
log.Printf("%v\n", values)
log.Printf("%v", c.Response().Header())
log.Printf("#####################")
err := database.Connection().Create(&user).Error
if err != nil {
return c.JSON(http.StatusInternalServerError, err)
} else {
return generateJwtToken(c, user)
}
}
๐คTrevor V
Source:stackexchange.com