Go高级之Gin框架中AJAX参数的提取(一)

前言

本文是探讨的是"Go高级之Gin框架中AJAX参数的提取"

此文章是个人学习归纳的心得,掘金首发,未经允许,严禁转载,如有不对, 还望斧正, 感谢!

Gin框架中Get请求的参数的提取

什么是get请求?

GET请求通常用于获取或查询资源。在HTTP协议中,GET是请求方法的一种,用于从服务器获取数据。具体来说,GET请求通常用于以下几种情况:

  1. 获取数据:GET请求最常用于从服务器获取数据,例如从Web页面获取HTML文件、css文件、js文件、图片文件、数据资源等。在这种情况下,GET请求将数据附加在URL的查询字符串中,可见于URL地址栏。
  2. 查询信息:GET请求也可以用于向服务器提交查询请求,并从服务器获取相应的结果。例如,根据URL地址,从服务器获取根据某些条件过滤后的数据记录。

请注意,GET请求的数据参数有长度限制,一般不能超过2048个字符。如果需要传递大量数据,可能需要使用POST或其他更适合的方法。 GET请求携带的参数通常分为两种类型:Params和Query。

Gin框架中的get请求中Params类型的参数的提取

Params:Params参数通常以键值对的形式附加在URL后面,用于传递一些相对较少的参数。这些参数不以查询字符串的形式出现,而是作为URL的一部分,通常在问号之后。例如,在URL http://example.com/api?param1=value1&param2=value2 中,param1param2 就是Params参数。

Params参数主要用于传递一些简单的、少量的参数,如用户ID、排序规则等。由于Params参数直接附加在URL上,因此其传递的数据量相对较小,安全性也相对较高。但需要注意的是,由于URL长度的限制,Params参数不适合传递大量的数据。

  • 我们先创建一个简单的gin服务器,端口设置为9090,这个端口设置你随意,注意要先安装gin框架的包,没有安装的话,就执行这个go get -u github.com/gin-gonic/gin
go 复制代码
package main

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

func main(){
   server := gin.Default()  // 创建一个gin服务器实例
   server.GET("/",func(c *gin.Context){
      c.String("200","这里是gin服务器")
   })
   server.Run(":9090")    // 把实例跑起来
}

上面的代码运行起来,如下图,我们可以在自己的浏览器访问,localhost:9090

  • 然后我们创建一条简单的需要携带Params参数的路由,要想提取到Param参数,我们主要是利用gin框架中封装好的Param系列的函数,下面的举例是最简单的应用
go 复制代码
package main

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

func main(){
   server := gin.Default()  // 创建一个gin服务器实例
     
   server.GET("/",func(c *gin.Context){
      c.String(200,"这里是gin服务器")
   })
   
   server.GET("/demo/:id", func (c *gin.Context) {  //注意这边的 `:id`
     id := c.Param("id")
     fmt.Println(id)
     c.String(200, "恭喜你,访问到了")
}
)
   server.Run(":9090")    // 把实例跑起来
}

注意这边的demo/666 ,代码中我们写的是 demo/:id

其中666作为Params参数被捕获到了。

注意

还有一个需要注意的点,请看下面的代码

go 复制代码
 server.GET("/demo/:id", func (c *gin.Context) { }) 
 server.GET("/demo/*id", func (c *gin.Context) { })

上面的代码,其中第一条访问路由的时候,必须要传id, 下面的写法,就可传可不传

Gin框架中的get请求中Query类型的参数的提取

Query:Query参数以查询字符串的形式出现在URL中,通常在问号之后。查询字符串中包含了多个键值对,每个键值对之间使用等号连接,不同的键值对之间使用"&"符号分隔。例如,在URL http://example.com/api?param1=value1&param2=value2 中,param1param2 就是Query参数。

Query参数主要用于传递一些相对较多的参数,如搜索条件、过滤规则等。由于Query参数以查询字符串的形式出现,因此其可以传递较大的数据量,但安全性相对较低。Query参数通常用于在服务器端进行过滤、排序等操作,以支持更灵活的数据查询和操作。

  • 由于Query参数是直接拼凑在路径之后,然后这个参数又是不确定的,我们如果在路径上限制的话,其实限制不了,所以我们不用考虑在路径上做限制,我们只需要在路由处理函数中进行相关操作就行。
go 复制代码
package main

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

func main(){
   server := gin.Default()  // 创建一个gin服务器实例
     
   server.GET("/demo2",func(c *gin.Context){
      id := c.Query("id") //query参数的话,是键值对的形式拼凑在路径之后,我们通过键来找值
      
      age := c.DefaultQuery("age", "666") //这个函数是给个默认值,如果找不到键为age的,就给个666
      
      ok := c.QueryArray("ok") //一个键可以有多个值,此函数将这个键的值以数组返回

      fmt.Println("id:", id, "age:", age, "ok:", ok)

      c.String(200,"这里是gin服务器")
   })
   
}
)
   server.Run(":9090")    // 把实例跑起来
}

然后我们把代码跑起来,然后在浏览器可以进行访问了,这个参数的顺序其实可以随意

query参数提取的方法还有几个,有兴趣的朋友可以自己去了解

总结

  • 其实就是Gin框架的几个api的调用,其中我们输入Params和Query的时候,其实用代码提示工具就很方便的
  • 多用就熟了

对了,我近期要用Gin框架+Vue3+js+MongoDB写一个个人博客网站的小实践,前后端都是自己来写,我将全程记录,从网站的UI设计,HTML、CSS实现,再到网站的整体架构,再到具体的细节的实现,这也是对Gin框架的一次实践,欢迎关注我的后续动态。

相关推荐
aLTttY3 分钟前
Spring Boot 3.x 集成 AI 大模型实战指南
人工智能·spring boot·后端
ejinxian12 分钟前
Rust Web框架三巨头Actix-web、Axum 、Rocket
开发语言·后端·rust
初心未改HD16 分钟前
Go语言环境搭建与第一个程序详解
开发语言·后端·golang
keep intensify29 分钟前
MIT 6.824 lab3B/C
分布式·后端·golang
凤山老林35 分钟前
Spring Boot 集成 TigerGraph 实现图谱分析技术方案
java·spring boot·后端·图谱分析·tigergraph
Victor35638 分钟前
MongoDB(106)什么是MongoDB Compass?
后端
.生产的驴40 分钟前
SpringBoot 大文件分片上传 文件切片、断点续传与性能优化 切片技术与优化方案 文件高效上传
java·服务器·spring boot·后端·spring·spring cloud·状态模式
Victor35643 分钟前
MongoDB(105)如何解决MongoDB中的内存泄漏问题?
后端
吴文周9 小时前
告别重复劳动:一套插件让 AI 替你写代码、修Bug、做测试、上生产
前端·后端·ai编程
Cyeam9 小时前
Roadbook CSV:一行 CSV 秒变高德地图路书
后端·开源·aigc