Boa noite estou tendo problema na hora de realizar o POST dentro do postman, ele apresenta erro 500 internal error e no log do terminal ele aparece essa informação runtime error: invalid memory address or nil pointer dereference
O metodo Get ele funciona de boa, aparecendo as informações que declarei na struct na pasta main.go
runtime error: invalid memory address or nil pointer dereference /usr/local/go/src/runtime/panic.go:220 (0x104a235) panicmem: panic(memoryError)
Meu código está idêntico ao do professor visto que, além de acompanhar as aulas, comparei com o repositório que a Alura disponibiliza no GitHub.
Alguém tem alguma ideia de como resolver esse problema, pois ví em outros tópicos pessoal falando que esqueceu de colocar database.ConectaDataBase(), não é o meu caso.
Package controller:
package controllers
import (
"modulos/database"
"modulos/models"
"net/http"
"github.com/gin-gonic/gin"
)
func ExibeTodosAlunos(c *gin.Context) {
c.JSON(http.StatusOK, models.Alunos)
}
func Saudacao(c *gin.Context) {
nome := c.Params.ByName("nome")
c.JSON(http.StatusOK, gin.H{
"API diz": "Bem-vindo " + nome + " ao nosso servidor?",
})
}
func CriaNovoAluno(c *gin.Context) {
var aluno models.Aluno
if err := c.ShouldBindJSON(&aluno); err != nil {
c.JSON(http.StatusBadRequest, gin.H{
"error": err.Error()})
return
}
database.DB.Create(&aluno)
c.JSON(http.StatusCreated, aluno)
}
PACKAGE DATABASE:
package database
import (
"log"
"modulos/models"
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
var (
DB *gorm.DB
err error
)
func ConectaDataBase() *gorm.DB {
StringDeConexao := "host=localhost user=gabriel password=root@123 dbname=postgres port=5432 sslmode=disable TimeZone=Asia/Shanghai"
DB, err := gorm.Open(postgres.Open(StringDeConexao))
if err != nil {
log.Panic("Erro na função conecta Database", err)
}
DB.AutoMigrate(&models.Aluno{})
return DB
}
PACKAGE ROUTES:
package routes
import (
"modulos/controllers"
"github.com/gin-gonic/gin"
)
func HandleRequests() {
r := gin.Default()
r.GET("/alunos", controllers.ExibeTodosAlunos)
r.GET("/:nome", controllers.Saudacao)
r.POST("/alunos", controllers.CriaNovoAluno)
r.Run()
}
NO POSTMAN eu consigo apenas listar as informações da struct que está na minha package main usando o metodo GET, quando realizo o metódo POST ele aprensenta erro 500.