请求的参数的获取与校验(基本流程)
请求的参数的获取与校验(基本流程)#
models/params.go
package models
//定义请求的参数
type ParamSignUp struct {
Username string `json:"username"`
Password string `json:"password"`
RePassword string `json:"re_password"`
}
routes/routes.go
package routes
import (
"net/http"
"web/controller"
"web/logger"
"github.com/gin-gonic/gin"
)
func Setup() *gin.Engine {
r := gin.New()
r.Use(logger.GinLogger(), logger.GinRecovery(true))
r.POST("./signup", controller.SignUpHandler)//添加
r.GET("/", func(c *gin.Context) {
c.String(http.StatusOK, "ok")
})
return r
}
controller/user.go
package controller
import (
"net/http"
"web/logic"
"web/models"
"go.uber.org/zap"
"github.com/gin-gonic/gin"
)
func SignUpHandler(c *gin.Context) {
//1.获取参数和参数校验
p := new(models.ParamSignUp)
if err := c.ShouldBindJSON(p); err != nil {
zap.L().Error("signup with invalid param", zap.Error(err))
c.JSON(http.StatusOK, gin.H{
"msg": "请求参数有误",
})
return
}
//手动对请求参数进行详细的业务规则校验
if len(p.Username) == 0 || len(p.Password) == 0 || len(p.RePassword) == 0 || p.RePassword != p.Password {
zap.L().Error("signup with invalid param")
c.JSON(http.StatusOK, gin.H{
"msg": "请求参数有误",
})
return
}
// 2.业务处理
logic.SignUp(p)
//3.返回响应
c.JSON(http.StatusOK, gin.H{
"msg": "success",
})
}
logic/user.go
package logic
import (
"web/dao/mysql"
"web/models"
snowflake "web/pkg"
)
func SignUp(p *models.ParamSignUp) {
//1.判断用户是否存在
mysql.QuerUserByUsername()
//2.生成UID
snowflake.GetID()
//3.保存进数据库
mysql.InsertUser()
}
dao/user.go
package mysql
//把每一步数据库操作封装成函数
//等待logic层调用
func QuerUserByUsername() {
}
func InsertUser() {
}
作者:suehoo
出处:https://www.cnblogs.com/suehoo/p/17019902.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!