Gin

本文介绍了Gin框架用于构建RESTfulAPI的基本步骤,包括快速入门、定义GET/POST/PUT/DELETE等HTTP方法实现RESTful操作,以及Gin的路由机制和路由组。此外,还讲解了如何使用Gin中间件来处理请求的公共逻辑,如统计处理时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 快速入门

安装:

  1. 下载并安装 gin:
$ go get -u github.com/gin-gonic/gin
  1. 代码中导入 gin 包:
import "github.com/gin-gonic/gin"

开始:

  1. 创建名为 main.go 的文件:
package main

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

func main() {
	r := gin.Default()
	// 定义路由的GET方法及响应处理函数
	r.GET("/hello", func(c *gin.Context) {
		// 将发送的信息封装成JSON发送给浏览器
		c.JSON(http.StatusOK, gin.H{
			//这是我们定义的数据
			"message": "快速入门",
		})
	})
	// 默认在本地8080端口启动服务
	r.Run()
}
  1. 执行​ go run main.go ​命令来运行代码,在浏览器中输入127.0.0.1:8080/hello 访问。
{"message":"快速入门"}

2. Gin RESTful API

REST 的含义是客户端与 Web 服务器之间进行交互的时候,使用 HTTP 协议中的4个请求方法代表不同的动作:

  • GET用来获取资源
  • POST用来新建资源
  • PUT用来更新资源
  • DELETE用来删除资源

只要API程序遵循了REST风格,那就可以称其为 RESTful API。目前在前后端分离的架构中,前后端基本都是通过RESTful API 来进行交互,如:

请求方法URL含义
GET/student查询学生信息
POST/create_student创建学生信息
PUT/updata_student更新学生信息
DELETE/delete_student删除学生信息
package main

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

func main() {
	r := gin.Default()
	r.GET("/student", func(c *gin.Context) {
		c.JSON(http.StatusOK, gin.H{
			"message": "查询学生信息成功",
		})
	})
	r.POST("/create_student", func(c *gin.Context) {
		c.JSON(http.StatusOK, gin.H{
			"message": "创建学生信息成功",
		})
	})
	r.PUT("/updata_student", func(c *gin.Context) {
		c.JSON(http.StatusOK, gin.H{
			"message": "更新学生信息成功",
		})
	})
	r.DELETE("/delete_student", func(c *gin.Context) {
		c.JSON(http.StatusOK, gin.H{
			"message": "删除学生信息成功",
		})
	})
	r.Run()
}

执行​ go run main.go ​命令来运行代码,在 postman 中 GET 127.0.0.1:8080/student 访问。

{
    "message": "查询学生信息成功"
}

3. Gin 路由

普通路由:

r.GET("/get",func(c *gin.Context) {})
r.GET("/login",func(c *gin.Context) {})
r.POST("/login",func(c *gin.Context) {})

可以匹配所有请求方法的Any方法:

r.Any("/test",func(c *gin.Context) {})

路由组:
可以将拥有共同前缀URL的路由划分为一个路由组:

package main

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

func main() {
	r := gin.Default()
	user := r.Group("/user")
	user.GET("/index", func(c *gin.Context) {})
	user.POST("/login", func(c *gin.Context) {})
	r.Run()
}

4. Gin 中间件

Gin 框架允许开发者在处理请求的过程中,加入钩子函数,这个钩子函数就叫中间件。中间件适合处理一些公共的业务逻辑,比如登陆认证,权限校验,记录日志等。

package main

import (
	"fmt"
	"net/http"
	"time"
	"github.com/gin-gonic/gin"
)

//定义一个中间键m1统计请求处理函数耗时
func m1(c *gin.Context) {
	fmt.Println("m1 in...")
	start := time.Now()
	// c.Next() //调用后续的处理函数
	c.Abort()//阻止调用后续的处理函数
	cost := time.Since(start)
	fmt.Printf("cost:%v\n", cost)
}

func index(c *gin.Context) {
	c.JSON(http.StatusOK, gin.H{
		"msg": "ok",
	})
}

func main() {
	r := gin.Default()
	r.GET("/", m1, index)
	r.Run()
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的小老虎丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值