Dưới đây là các bước tạo một ứng dụng RESTful API đơn giản với Go, sử dụng Framework Gin, GORM và database MySQL. Ứng dụng gồm các chức năng đơn giản:
- Đăng ký
- Đăng nhập
- Chỉnh sửa Profile
Cấu trúc thư mục dự án
Tạo thư mục simple-restful-app cấu trúc như sau:

Cài đặt thư viện cho dự án
Chạy lệnh sau trong terminal mở tại thư mục dự án:
go mod init simple-restful-app go get -u github.com/gin-gonic/gin go get -u gorm.io/gorm go get -u gorm.io/drivermysql
Source code
File model/user.go:
package model
type User struct {
ID uint `gorm:"primaryKey" json:"id"`
Name string `json:"name"`
Email string `json:"email"`
Password string `json:"password"`
}
File database/db.go:
package database
import (
"fmt"
"simple-restful-app/model"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
var DB *gorm.DB
func Connect() {
dsn := "root:ducphat1708@tcp(127.0.0.1:3306)/go_db?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic("Could not connect to the database" + err.Error())
}
fmt.Println("Connected to the database successfully")
DB = db
}
func Migrate() {
DB.AutoMigrate(&model.User{})
}
File controller/user_controller.go:
package controller
import (
"simple-restful-app/database"
"simple-restful-app/model"
"net/http"
"strconv"
"github.com/gin-gonic/gin"
)
func Register(c *gin.Context) {
var user model.User
if err := c.ShouldBindJSON(&user); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
if err := database.DB.Create(&user).Error; err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": "Email đã tồn tại"})
return
}
c.JSON(http.StatusCreated, user)
}
func Login(c *gin.Context) {
var input model.User
var user model.User
if err := c.ShouldBindJSON(&input); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
if err := database.DB.Where("email = ? AND password = ?", input.Email, input.Password).First(&user).Error; err != nil {
c.JSON(http.StatusUnauthorized, gin.H{"error": "Sai email hoặc mật khẩu"})
return
}
c.JSON(http.StatusOK, gin.H{"message": "Đăng nhập thành công", "user": user})
}
func UpdateUser(c *gin.Context) {
id := c.Param("id")
userID, _ := strconv.Atoi(id)
var user model.User
if err := database.DB.First(&user, userID).Error; err != nil {
c.JSON(http.StatusNotFound, gin.H{"error": "Người dùng không tồn tại"})
return
}
var input model.User
if err := c.ShouldBindJSON(&input); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
user.Name = input.Name
user.Email = input.Email
user.Password = input.Password
database.DB.Save(&user)
c.JSON(http.StatusOK, user)
}
File main.go:
package main
import (
"simple-restful-app/database"
"simple-restful-app/controller"
"github.com/gin-gonic/gin"
)
func main() {
// Khởi tạo database và migrate
database.Connect()
database.Migrate()
r := gin.Default()
r.POST("/register", controller.Register)
r.POST("/login", controller.Login)
r.PUT("/user/:id", controller.UpdateUser)
r.Run(":8080")
}
để chạy dự án, sử dụng lệnh:
go run main.go
hoặc sử dụng công cụ Run & Debug trong IDE
Test APi với Postman
Test POST /register: http://localhost:8080/register

Test POST /login: http://localhost:8080/login

Test PUT /user/1: http://localhost:8080/user/1








Khoá học lập trình game con rắn cho trẻ em


