Gin入门(5)-第三集才登场的主角:Gin

前情提要

上期我们讲完了mysql和Redis的配置,完成了对 main函数下第一行代码的解析,今天接着继续

(之前写错成steup了。。。)

这是main函数下第二行代码

点击查看SetupRouter代码
func SetupRouter() *gin.Engine {
	r := gin.Default()
	r.Use(cors.New(cors.Config{
	AllowOrigins: []string{"*"},
	AllowMethods: []string{"GET", "PUT", "OPTIONS"},
	AllowHeaders: []string{"Origin", "Content-Type", "Authorization"},
	ExposeHeaders: []string{"Content-Length"},
	AllowCredentials: true,
	MaxAge: 12 * time.Hour,
	}))
	auth := r.Group("/api/auth")
	{
	auth.POST("/login", controllers.Login)
	auth.POST("/register", controllers.Register)
	}
	api := r.Group("/api")
	api.GET("/exchangeRates", controllers.GetExchangeRate)
	api.Use(middlewares.AutoMigrate())
	{
	api.POST("/exchangeRates", controllers.CreateExchangeRate)
	api.POST("/articles", controllers.CreateArticle)
	api.GET("/articles", controllers.GetArticles)
	api.GET("/articles/:id", controllers.GetArticlesByID)
	api.POST("/articles/:id/like", controllers.LikeArticle)
	api.GET("/articles/:id/like", controllers.GetArticleLikes)
	}
	return r
}

实现前后端对接

虽然当时学这个项目只是单纯为了学Gin,但一个完整的后端服务器是不止包含框架的,所以到了第三期我们才终于看到Gin库的身影

Gin官网也是有官中的

这里可以看到在不需要任何配置的情况下只需要
r := gin.Default()
就可以创建一个默认参数的gin.Engine实例

Run()方法可以对指定的端口启用监听,不过在我们这个项目中并不直接使用这个方法,后续会提及的

这里引入了Cors库,用来设置中间件,先讲一下Use()方法

Deepseek给的初步讲解,如果觉得抽象的话就往死里问就完事了

HandlerFunc的定义一眼望过去容易蒙圈,我们还是从传的参数cors.New(cors.Config{...}入手

我们有必要看看cors库,同时对于一定要先了解CORS概念,可以看大佬的文章(正如前言所说,一个项目的技术栈往往不是一个框架,想要做出项目要学的东西可不只是编程语言)

立马就对这段代码的目的了然了:为我们的gin.Engine添加cors中间件
而同时我们通过corsConfig{}结构体为cors进行配置

可以看到配置选项不少,我们这里就只看有改动的地方吧


其他配置就靠大家自行摸索

有Web基础的话相信大家能看得出这里是路由的管理部分了,通过添加并配置前端请求的对应路由,我们就可以处理用户的各种操作并完成CRUD

gorm文档查看Group的内容

Gin的分组功能可以让多级路由的管理变得轻松简单,比如图示我们就可以分别访问localhost:8080/v1/loginlocalhost:8080/v2/login,在配置的时候我们就不用频繁的输入v1和v2,也更方便我们进行权限管理和版本控制

对于处理请求,Gin支持RESTful API,配置简单易懂

通过前路径后句柄的传参即可完成特定API的对接

其实到这里,我们已经可以通过配置路由对接前端实现一些小功能了,比如按钮计数

但我们的项目还没有结束,我们还有身份认证中间件API句柄的实现自定义服务器关闭提示没有讲

这些便待后续娓娓道来了

结语

如果觉得我的文章写的不错麻烦各位点个赞,你们的支持是我创作的动力

各位下次再见

作者:Chuan81原文地址:https://www.cnblogs.com/Chuan81/p/18822271

%s 个评论

要回复文章请先登录注册