Aula 08 - Golang - Fiber - Request Data
Vamos criar um
User, e pegar os dados da própria
request.
Para pegar os dados da
request, temos que criar uma variável
map onde a
chave é uma
string e o
valor também é uma
string.
Precisamos fazer o
parse da
request e para isso vamos usar o
BodyParser(), passando para ele um ponteiro, ou seja, uma referência para os dados.
Ele retorna um erro caso não consiga fazer o parse dos dados.
fiber-project/controllers/authController.go
package controllers
import (
"fiber-project/models"
"github.com/gofiber/fiber/v2"
)
func Register(c *fiber.Ctx) error {
var data map[string]string
err := c.BodyParser(&data)
if err != nil{
return err
}
var user models.User
return c.JSON(user)
}
Essa é uma forma de fazer, mas existe uma forma mais curta para fazer isso, só muda a escrita do código, a lógica é a mesma.
fiber-project/controllers/authController.go
package controllers
import (
"fiber-project/models"
"github.com/gofiber/fiber/v2"
)
func Register(c *fiber.Ctx) error {
var data map[string]string
if err := c.BodyParser(&data); err != nil {
return err
}
var user models.User
return c.JSON(user)
}
Pegamos o erro na parte
lilás e verificamos se o erro é
diferente de
nil na parte em
rosa.
Agora vamos definir o primeiro nome, o último nome e o email pegando da referência ao
data.
fiber-project/controllers/authController.go
package controllers
import (
"fiber-project/models"
"github.com/gofiber/fiber/v2"
)
func Register(c *fiber.Ctx) error {
var data map[string]string
if err := c.BodyParser(&data); err != nil {
return err
}
var user models.User
user.FirstName = data["first_name"]
user.LastName = data["last_name"]
user.Email = data["email"]
user.Password = data["password"]
return c.JSON(user)
}
Outra opção para fazer a mesma coisa é:
fiber-project/controllers/authController.go
package controllers
import (
"fiber-project/models"
"github.com/gofiber/fiber/v2"
)
func Register(c *fiber.Ctx) error {
var data map[string]string;
if err := c.BodyParser(&data); err != nil {
return err;
}
user := models.User{
FirstName: data["first_name"],
LastName: data["last_name"],
Email: data["email"],
Password: data["password"],
}
return c.JSON(user)
}
Faça o teste usando o
Postman, monte um
Post Request raw com os dados necessários do usuário.
Exemplo:
{
"first_name": "a",
"last_name": "a",
"email": "a@mail.com",
"password": "a"
}
Agora precisamos validar o
password, para garantir que os dois sejam iguais.
fiber-project/controllers/authController.go
package controllers
import (
"fiber-project/models"
"github.com/gofiber/fiber/v2"
)
func Register(c *fiber.Ctx) error {
var data map[string]string;
if err := c.BodyParser(&data); err != nil {
return err;
}
if data["password"] != data["password_confirm"]{
c.Status(400)
return c.JSON(fiber.Map{
"message": "Passwords do not match!",
})
}
user := models.User{
FirstName: data["first_name"],
LastName: data["last_name"],
Email: data["email"],
Password: data["password"],
}
return c.JSON(user)
}
Teste novamente usando o Postman.
{
"first_name": "a",
"last_name": "a",
"email": "a@mail.com",
"password": "a",
"confirm_password": "a"
}
Nos vemos na próxima então ;)
Até lá!
Código da aula: Github
Redes Sociais:
Novamente deixo meus link de afiliados:
Obrigado, até a próxima e bons estudos. ;)