首页 > 其他分享 >请求的参数的获取与校验(基本流程)

请求的参数的获取与校验(基本流程)

时间:2023-01-02 14:55:52浏览次数:42  
标签:web http 请求 models 流程 校验 func go gin

请求的参数的获取与校验(基本流程)

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() {

}

标签:web,http,请求,models,流程,校验,func,go,gin
From: https://www.cnblogs.com/suehoo/p/17019902.html

相关文章

  • csrf跨站请求CBV添加装饰器的多种方式
    今日内容概要csrf跨站请求伪造csrf相关校验策略CBV添加装饰器的多种方式auth认证模块BBS项目需求分析今日内容详细csrf跨站请求伪造钓鱼网站:模仿一个正规的......
  • 广州深圳数据中心机房搬迁方案流程
    机房搬迁作为一项非常重要的工作,涉及多种设备、重要数据、核心资产等。对企业来说,机房搬迁工程需要专业、细致。数据中心机房搬迁工作时间分为3个阶段:搬迁前,搬迁中,搬迁后。......
  • 广州深圳数据中心机房搬迁方案流程
    机房搬迁作为一项非常重要的工作,涉及多种设备、重要数据、核心资产等。对企业来说,机房搬迁工程需要专业、细致。数据中心机房搬迁工作时间分为3个阶段:搬迁前,搬迁中,搬迁后。......
  • 广州深圳数据中心机房搬迁方案流程
    机房搬迁作为一项非常重要的工作,涉及多种设备、重要数据、核心资产等。对企业来说,机房搬迁工程需要专业、细致。数据中心机房搬迁工作时间分为3个阶段:搬迁前,搬迁中,搬迁后。......
  • 广州深圳数据中心机房搬迁方案流程
    机房搬迁作为一项非常重要的工作,涉及多种设备、重要数据、核心资产等。对企业来说,机房搬迁工程需要专业、细致。数据中心机房搬迁工作时间分为3个阶段:搬迁前,搬迁中,搬迁后。......
  • C#.Net中几款HTTP请求库
    1、RestSharp这个库的热度还是毕竟高,已经达到了7.5kstar这里我们就先省略Nuget安装,直接到示例编码[HttpGet("joke")]publicasyncTask<string>GetJoke()......
  • Django之csrf校验 CBV加装饰器以及auth认证模块
    目录Django之csrf校验CBV加装饰器以及auth认证模块一、csrf跨站请求伪造二、csrf校验策略(在提交数据的位置添加唯一标识)三、CBV加装饰器四、auth认证模块五、auth认证......
  • java-流程控制语句
    目录顺序分支if判断if格式1if格式2if格式3switch选择case穿透:即没有break的case语句!补充:if和switch的使用说明!流程for循环*while循环*for与while的区别do...while循环顺......
  • 【JavaWeb】Http get请求乱码、post请求乱码,html页面乱码、jsp页面乱码,控制台tomcat日
    目录​​1、乱码原因和解决思路​​​​2、准备知识(新手必读,老司机跳过)​​​​2.1字符集​​​​2.2URL编码​​​​2.3 javawebservlet ​​​​3 浏览器编码/解码......
  • arthas输出方法的请求参数和返回值
    去掉访问数据库逻辑把SSM工程打成jar包jar包在target目录下,拷贝到机器上运行jar包java-jardemo-0.0.1-SNAPSHOT.jar下载Arthas并启动curl-Ohttps://alibaba.g......