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框架的一次实践,欢迎关注我的后续动态。

相关推荐
用户990450177800926 分钟前
ruoyi-vue2集成flowable6.7.2后端篇
后端
qq_124987075331 分钟前
基于springboot框架的小型饮料销售管理系统的设计与实现(源码+论文+部署+安装)
java·spring boot·后端·spring·毕业设计
我命由我1234537 分钟前
Python Flask 开发:在 Flask 中返回字符串时,浏览器将其作为 HTML 解析
服务器·开发语言·后端·python·flask·html·学习方法
IT_陈寒1 小时前
JavaScript 性能优化:5个被低估的V8引擎技巧让你的代码提速50%
前端·人工智能·后端
想用offer打牌1 小时前
数据库大事务有什么危害(面试版)
数据库·后端·架构
踏浪无痕1 小时前
别再只会用 Feign!手写一个 Mini RPC 框架搞懂 Spring Cloud 底层原理
后端·面试·架构
用户695619440371 小时前
前后端分离VUE3+Springboot项目集成PageOffice核心代码
后端
rannn_1111 小时前
【Git教程】概述、常用命令、Git-IDEA集成
java·git·后端·intellij-idea
我家领养了个白胖胖1 小时前
向量化和向量数据库redisstack使用
java·后端·ai编程
嘻哈baby1 小时前
NextCloud私有云盘完整部署指南
后端