Salmon的全栈知识 Salmon的全栈知识
首页
  • JavaSE
  • JavaWeb
  • Spring生态
  • JUC
  • JVM
  • Netty
  • Java各版本特性
  • 23种设计模式
  • Maven
  • Java常用框架
  • Dubbo
  • OpenFeign
  • Nacos
  • Zookeeper
  • Sentinel
  • Seata
  • Gateway
  • Go基础
  • Gin
  • SQL数据库

    • MySQL
    • Oracle
  • NoSQL数据库

    • Redis
    • MongoDB
    • ElasticSearch
  • 消息中间件

    • RabbitMQ
    • RocketMQ
    • Kafka
    • ActiveMQ
    • MQTT
    • NATS
  • 网关中间件

    • Nginx
  • Linux
  • Docker
  • Git
  • K8s
  • Solidity
  • Java
  • 计算机网络
  • 操作系统
GitHub (opens new window)
首页
  • JavaSE
  • JavaWeb
  • Spring生态
  • JUC
  • JVM
  • Netty
  • Java各版本特性
  • 23种设计模式
  • Maven
  • Java常用框架
  • Dubbo
  • OpenFeign
  • Nacos
  • Zookeeper
  • Sentinel
  • Seata
  • Gateway
  • Go基础
  • Gin
  • SQL数据库

    • MySQL
    • Oracle
  • NoSQL数据库

    • Redis
    • MongoDB
    • ElasticSearch
  • 消息中间件

    • RabbitMQ
    • RocketMQ
    • Kafka
    • ActiveMQ
    • MQTT
    • NATS
  • 网关中间件

    • Nginx
  • Linux
  • Docker
  • Git
  • K8s
  • Solidity
  • Java
  • 计算机网络
  • 操作系统
GitHub (opens new window)
npm

(进入注册为作者充电)

  • Gin 介绍
  • Gin 环境搭建
  • golang 程序的热加载
  • Gin 框架中的路由
    • 1、路由概述
    • 2、简单的路由配置
      • 路由里面获取 Get 传值
      • 动态路由
    • 3、c.String() c.JSON() c.JSONP() c.XML() c.HTML()
  • Gin HTML 模板渲染
  • 静态文件服务
  • 路由详解
  • Gin 中自定义控制器
  • Gin 中间件
  • Gin 中自定义 Model
  • Gin 文件上传
  • Gin 中的 Cookie
  • Gin 中的 Session
  • Gin 中使用 GORM 操作 mysql 数据库
  • 原生 SQL 和 SQL 生成器
  • Gin 中使用 GORM 实现表关联查询
  • GORM 中使用事务
  • Gin 中使用 go-ini 加载.ini 配置文件
  • 《Gin》笔记
Salmon
2025-03-23
目录

Gin 框架中的路由

# 1、路由概述

路由(Routing)是由一个 URI(或者叫路径)和一个特定的 HTTP 方法(GET、POST 等)组成的,涉及到应用如何响应客户端对某个网站节点的访问。

RESTful API 是目前比较成熟的一套互联网应用程序的 API 设计理论,所以我们设计我们的路由的时候建议参考 RESTful API 指南。

在 RESTful 架构中,每个网址代表一种资源,不同的请求方式表示执行不同的操作:

方法 操作 说明
GET SELECT 从服务器取出资源(一项或多项)
POST CREATE 在服务器新建一个资源
PUT UPDATE 在服务器更新资源(客户端提供改变后的完整资源)
DELETE DELETE 从服务器删除资源

# 2、简单的路由配置

简单的路由配置(可以通过 postman 测试)

当用 GET 请求访问一个网址的时候,做什么事情:

r.GET("网址", func(c *gin.Context) {
    c.String(200, "Get")
})

当用 POST 访问一个网址的时候,做什么事情:

r.POST("网址", func(c *gin.Context) {
    c.String(200, "POST")
})

当用 PUT 访问一个网址的时候,执行的操作:

r.PUT("网址", func(c *gin.Context) {
    c.String(200, "PUT")
})

当用 DELETE 访问一个网址的时候,执行的操作:

r.DELETE("网址", func(c *gin.Context) {
    c.String(200, "DELETE")
})

# 路由里面获取 Get 传值

域名/news?aid=20

r.GET("/news", func(c *gin.Context) {
    aid := c.Query("aid")
    c.String(200, "aid=%s", aid)
})

# 动态路由

域名/user/20

r.GET("/user/:uid", func(c *gin.Context) {
    uid := c.Param("uid")
    c.String(200, "userID=%s", uid)
})

# 3、c.String() c.JSON() c.JSONP() c.XML() c.HTML()

返回一个字符串

r.GET("/news", func(c *gin.Context) {
    aid := c.Query("aid")
    c.String(200, "aid=%s", aid)
})

返回一个 JSON 数据

func main() {
    r := gin.Default()
    // gin.H 是 map[string]interface{}的缩写
    r.GET("/someJSON", func(c *gin.Context) {
       // 方式一:自己拼接 JSON
       c.JSON(http.StatusOK, gin.H{"message": "Hello world!"})
    })
    r.GET("/moreJSON", func(c *gin.Context) {
       // 方法二:使用结构体
       var msg struct {
          Name    string `json:"user"`
          Message string
          Age     int
       }
       msg.Name = "IT 营学院"
       msg.Message = "Hello world!"
       msg.Age = 18
       c.JSON(http.StatusOK, msg)
    })
    r.Run(":9090")
}

JSOPN

func main() {
    r := gin.Default()
    r.GET("/JSONP", func(c *gin.Context) {
       data := map[string]interface{}{"foo": "bar"}
       // /JSONP?callback=x
       // 将输出:x({\"foo\":\"bar\"})
       c.JSONP(http.StatusOK, data)
    })
    r.Run(":9090")
}

返回 XML 数据

func main() {
    r := gin.Default()
    // gin.H 是 map[string]interface{}的缩写
    r.GET("/someXML", func(c *gin.Context) {
       // 方式一:自己拼接 JSON
       c.XML(http.StatusOK, gin.H{"message": "Hello world!"})
    })
    r.GET("/moreXML", func(c *gin.Context) {
       // 方法二:使用结构体
       type MessageRecord struct {
          Name    string
          Message string
          Age     int
       }
       var msg MessageRecord
       msg.Name = "IT 营学院"
       msg.Message = "Hello world!"
       msg.Age = 18
       c.XML(http.StatusOK, msg)
    })
    r.Run(":9090")
}

渲染模板

router.GET("/", func(c *gin.Context) {
    c.HTML(http.StatusOK, "default/index.html", map[string]interface{}{ "title": "前台首页"
    })
})
上次更新: 2025/03/23, 22:36:48
golang 程序的热加载
Gin HTML 模板渲染

← golang 程序的热加载 Gin HTML 模板渲染→

Theme by Vdoing | Copyright © 2022-2025 Salmon's Blog
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式