Gin 框架中的路由

news/2024/11/16 18:35:54 标签: golang, 开发语言, 后端, GO, 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 = "雨轩编程 "
msg.Message = "Hello world!"
msg.Age = 18
c.JSON(http.StatusOK, msg)
})
r.Run(":8080")
}

 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)
})
// 监听并在 0.0.0.0:8080 上启动服务
r.Run(":8080")
}

 返回 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 = "雨轩编程 "
        msg.Message = "Hello world!"
        msg.Age = 18
        c.XML(http.StatusOK, msg)
        })
r.Run(":8080")
}

 渲染模板

router.GET("/", func(c *gin.Context) {
        c.HTML(http.StatusOK, "default/index.html", map[string]interface{}{
        "title": "前台首页 "
        })
})

http://www.niftyadmin.cn/n/5754510.html

相关文章

redis序列化数据查询

可以看到是HashMap,那么是序列化的数据 那么我们来获得反序列化数据 import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.ObjectInputStream; import redis.clients.jedis.Jedis;public class RedisDeserializeDemo {public static…

【数据结构】【线性表】静态链表(附C语言源码)

静态链表 链表是物理结构为链式的线性表,其每个结点的存储位置不一定是连续的,每个结点依靠结点元素的中的指针线性相连。但有时候为了方便管理内存空间,会将链表的各个结点存储空间放在一块,其实现方式类似于数组,只…

World of Warcraft [WeakAuras]Barney Raid Kit - Collapsing Star Indicator

https://wago.io/BarneyCS 黄色数字表示需要修的血量。 绿色数字表示停止修血。 红色数字表示修血过量,以及该坍缩星将在大爆炸读条结束前多少秒爆炸。 Numbers in yellow means damage required. Numbers in green means HP is good, dont damage anymore. Numbers…

ES数据迁移方式

elasticdump 需要安装elasticdump ,node插件 #!/bin/bashindexes("index1" "index2")for index in "${indexes[]}" doecho "backup ${index} start"#--type: 迁移类型,默认为 data,表明只迁移数据…

python:用 sklearn 构建 K-Means 聚类模型

pip install scikit-learn 或者 直接用 Anaconda3 sklearn 提供了 preprocessing 数据预处理模块、cluster 聚类模型、manifold.TSNE 数据降维模块。 编写 test_sklearn_3.py 如下 # -*- coding: utf-8 -*- """ 使用 sklearn 构建 K-Means 聚类模型 "&…

【提高篇】3.3 GPIO(三,工作模式详解 上)

目录 一,工作模式介绍 二,输入浮空 2.1 输入浮空简介 2.2 输入浮空特点 2.3 按键检测示例 2.4 高阻态 三,输入上拉 3.1 输入上拉简介 3.2 输入上拉的特点 3.3 按键检测示例 四,输入下拉 4.1 输入下拉简介 4.2 输入下拉特点 4.3 按键检测示例 一,工作模式介绍…

用redis的zset实现日榜,周榜,月榜

思路&#xff1a; 1.初始化一个月的数据&#xff1a; /*** 初始化一个月数据*/Testpublic void initMonthData(){//计算当前时间小时的keylong hourSystem.currentTimeMillis()/(1000*60*60);for(int i1;i<24*30;i){String key"W_hour"(hour-i);Random random new…

LabVIEW大数据处理

在物联网、工业4.0和科学实验中&#xff0c;大数据处理需求逐年上升。LabVIEW作为一款图形化编程语言&#xff0c;凭借其强大的数据采集和分析能力&#xff0c;广泛应用于实时数据处理和控制系统中。然而&#xff0c;在面对大数据处理时&#xff0c;LabVIEW也存在一些注意事项。…