Gin实战-开发用户管理系统(脚手架)


课程地址: https://www.imooc.com/learn/1175
Vue:https://github.com/Keegan-y/vue-admin
后台代码:https://github.com/Keegan-y/gin_scaffold

gin基础知识

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 开发环境
    在这里插入图片描述

Gin入门实战

2-5 gin基础:请求路由 - 参数作为url

func main()  {
	r := gin.Default()
	r.GET("/:name/:id", func(c *gin.Context) {
		c.JSON(200,gin.H{
			"name":c.Param("name"),
			"id":c.Param("id"),
		})
	})
	r.Run()
}

2-7 gin基础:请求路由 - 泛绑定

func main() {
	r := gin.Default()
	r.GET("/user/*action", func(c *gin.Context) {
		c.JSON(200, "hello world")
		})
	r.Run()
}

2-8 gin基础:获取请求参数 - 获取GET参数

func main() {
	r := gin.Default()
	r.GET("/test", func(c *gin.Context) {
		firstName := c.Query("firstname")
		lastName := c.DefaultQuery("lastname", "last_def_name")
		c.String(http.StatusOK, "%s, %s", firstName, lastName)
	})
	r.Run()
}

2-9 gin基础:获取请求参数 - 获取body内容

func main() {
	r := gin.Default()
	r.POST("/test", func(c *gin.Context) {
		badyByts ,err :=ioutil.ReadAll(c.Request.Body)
		if err != nil {
			c.String(http.StatusBadRequest, err.Error())
			c.Abort() //输出结束
		}
		// 因为badyByts读取,需要重新写入
		c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(badyByts))
		firstName := c.PostForm("firstname")
		lastName := c.DefaultPostForm("lastname", "last_def_name")
		c.String(http.StatusOK, "%s, %s, %s", firstName, lastName, string(badyByts))
	})
	r.Run()
}

2-10 gin基础: 获取请求参数 - 获取bind参数

func main() {
	r := gin.Default()
	r.GET("/testing", testing)
	r.POST("/testing", testing)
	r.Run()
}

func testing(c *gin.Context) {
	var person Person
	if err:= c.ShouldBind(&person); err==nil{
		// 这个根据
		c.String(200,"%v",person)
	}else {
		c.String(200,"person bing error:%v",err)
	}

}

在这里插入图片描述

2-11 gin基础:验证请求参数 - 章节介绍

在这里插入图片描述

结构体验证

在这里插入图片描述

自定义验证器

V9 可以参考:传送门在这里插入图片描述
在这里插入图片描述

2-14 gin基础:验证请求参数 - 多语言翻译验证

在这里插入图片描述

2-15 gin基础:中间件-章节介绍

在这里插入图片描述
注意,gin.Default() 默认是加载了一些框架内置的中间件的,而 gin.New() 则没有,根据需要自己手动加载中间件。

  • log中间件
package main

import (
	"github.com/gin-gonic/gin"
	"io"
	"net/http"
	"os"
)

func main() {
	f, _ := os.Create("gin.log")
	gin.DefaultWriter = io.MultiWriter(f)
	gin.DefaultErrorWriter = io.MultiWriter(f)

	r := gin.New()
	r.Use(gin.Logger(), gin.Recovery()) // 请求日志, 收集错误不至于进程挂掉
	r.GET("/test", func(c *gin.Context) {
		lastName := c.DefaultQuery("lastname", "last_def_name")
		c.String(http.StatusOK, "%s", lastName)
	})
	r.Run()
}

  • 自定义IP白名单中间件
package main

import (
	"github.com/gin-gonic/gin"
	"io"
	"net/http"
	"os"
)

func IPAuthMiddleware() gin.HandlerFunc {
	return func(c *gin.Context) {
		ipList := []string{
			"127.0.0.1",
		}
		flag := false
		clientIP := c.ClientIP()
		for _, host := range ipList {
			if clientIP == host {
				flag = true
			}
		}
		if !flag {
			c.String(401, "%s ,not in iplist", clientIP)
			c.Abort()
		}

	}

}

func main() {
	r := gin.Default()
	r.Use(IPAuthMiddleware())
		c.String(200, "hello ")
	})
	r.Run()
}

2-19 gin基础拓展:优雅关停服务器

在这里插入图片描述
在这里插入图片描述

## 2-19 gin基础拓展:template

func main() {
	r := gin.Default()
	r.LoadHTMLGlob("template/*")
	r.GET("/test", func(c *gin.Context) {
		c.HTML(200, "index.html", gin.H{
			"title": "index.html",
		})
	})
	r.Run()
}

2-21 gin基础拓展:自动化证书配置

在这里插入图片描述

搭建企业级脚手架

开发用户管理系统

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值