首页 > 其他 > 详细

Gin框架使用总结

时间:2021-06-28 15:19:27      阅读:23      评论:0      收藏:0      [点我收藏+]

技术概述

Gin是一个由Go(Golang)语言编写的HTTP Web框架。它提供Martini风格但是拥有更好性能的API,并且由于使用了httprouter,速度提高了近40倍。

技术详述

1.框架的安装

安装Go版本1.13以上并且执行下面Go命令行来安装Gin:

go get -u github.com/gin-gonic/gin

在代码中引用:

import "github.com/gin-gonic/gin"

2.框架的使用

  • 只需要一下代码就能开启一个简单的HTTP服务器:
package main

import "github.com/gin-gonic/gin"

func main() {
	r := gin.Default()
	r.GET("/ping", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "pong",
		})
	})
	r.Run()
}
  • 自定义中间件进行初始化Session
func Session(secret string) gin.HandlerFunc {
	store := cookie.NewStore([]byte(secret))
	store.Options(sessions.Options{HttpOnly: true, MaxAge: 7 * 86400, Path: "/", Secure: false, SameSite: http.SameSiteStrictMode})
	return sessions.Sessions("gin-session", store)
}
  • 使用自定义Router:
// router.go中
func NewRouter() *gin.Engine {
	r := gin.Default()

  // 使用中间件
	r.Use(middleware.Session(os.Getenv("SESSION_SECRET")))
  
  // 路由
  ......
  
  return r
}

// main.go中
r := router.NewRouter()
  • 路由接受请求

接受请求的函数接受两个参数,一个是请求的URL路径,另一个是处理这个请求的函数HandlerFunc,如:

r.POST("login", api.UserLogin)

接受到对loginPOST请求的时候,就通过api.UserLogin这个函数进行处理。

HandleFunc可以在处理完业务逻辑之后,通过JSON()或其他函数将消息返回前端。

func UserLogin(c *gin.Context) {
	//......
  // 业务逻辑

	c.JSON(http.StatusOK, res)
}
  • Gin有多种从前端获取信息的方式,如:JSON,URL参数等。
// URL参数,匹配 "/user/user_name"
r.GET("/user/:name", func(c *gin.Context) {
		name := c.Param("name")
	})

// URL参数,匹配 "/welcome?firstname=Jane&lastname=Doe"
r.GET("/welcome", func(c *gin.Context) {
		firstname := c.DefaultQuery("firstname", "Guest")
		lastname := c.Query("lastname")
	})

//也可以通过c.ShouldBind()将JSON解析为结构体。

问题与解决

  • 在调用JSON()函数返回JSON格式信息之后,HandlerFunc并不会返回。如果HandlerFunc中多次调用JSON()函数,请求的返回中就会出现多条JSON格式字符串。及时加上return语句即可解决问题。
  • 上传文件的时候,文件本身的文件名是不可信的,需要在后端重命名后再保存。

总结

Gin框架易用性良好,学习成本较低,开发调试也十分的简单。在方便上手的同时也能够提供较高的性能,在很多场景下都是一个很好的选择。

参考链接

Gin框架使用总结

原文:https://www.cnblogs.com/linxuan-zheng/p/14944121.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!