框架分为四层。models,controllers,repositories,services
以User为例
1、controller示例
package controllers
import (
"appserver/services"
"github.com/gin-gonic/gin"
)
type UserController struct {
userService services.UserService
}
func NewUserController(userService services.UserService) *UserController {
return &UserController{
userService: userService,
}
}
func (uc *UserController) Login(c *gin.Context) {
// 处理用户登录的逻辑
return
}
2、models示例
package models
import "time"
// User 表示用户模型
type User struct {
ID uint `json:"id"`
Username string `json:"username"`
Password string `json:"-"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
// CreateUserInput 表示创建用户的输入数据
type CreateUserInput struct {
Username string `json:"username"`
}
// UpdateUserInput 表示更新用户的输入数据
type UpdateUserInput struct {
Username string `json:"username"`
Password string `json:"password"`
}
3、repositories示例
package repositories
import (
"appserver/models"
)
type UserRepository struct {
}
func NewUserRepository() UserRepository {
return UserRepository{}
}
func (ur *UserRepository) FindByUsername(username string) (*models.User, error) {
// 处理根据用户名查询用户的逻辑
user := models.User{}
user.Username = "zhangsan"
return &user, nil
}
// 其他用户相关的数据访问方法...
4、services示例
package services
import (
"appserver/models"
"appserver/repositories"
)
type UserService struct {
userRepository repositories.UserRepository
}
func NewUserService(userRepository repositories.UserRepository) UserService {
return UserService{
userRepository: userRepository,
}
}
func (us *UserService) AuthenticateUser(username, password string) (*models.User, error) {
// 处理用户身份验证的逻辑
user := models.User{}
user.Username = "zhangsan"
return &user, nil
}
// 其他用户相关的服务方法...
5、请求消息处理
// 初始化依赖的服务和存储库
userService := services.NewUserService(repositories.NewUserRepository())
// 创建控制器
userController := controllers.NewUserController(userService)
// 用户登录
router.POST("/user/login", userController.Login)