当前位置: 首页 > news >正文

诸暨市建设局官方网站乔拓云网站建设

诸暨市建设局官方网站,乔拓云网站建设,公司做网站要花多少钱,网络设计概念6.Gin 路由详解 - GET POST 请求以及参数获取示例 GET POST 请求以及参数获取示例 Get 请求:获取 Quary 参数 // 获取query参数示例:GET /user?uid20&namejack&page1 r.GET("/user", func(c *gin.Context) {// 获取参数// Query获取参…

6.Gin 路由详解 - GET POST 请求以及参数获取示例

GET POST 请求以及参数获取示例

Get 请求:获取 Quary 参数

// 获取query参数示例:GET /user?uid=20&name=jack&page=1
r.GET("/user", func(c *gin.Context) {// 获取参数// Query获取参数uid := c.Query("uid")username := c.Query("name")// DefaultQuery获取参数,可以设置默认值:也就是如果没有该参数,则使用默认值page := c.DefaultQuery("page", "1")// 返回JSON结果c.JSON(http.StatusOK, gin.H{"uid":      uid,"username": username,"page":     page,})
})

测试如下:

9a07791d0622954b01ab845e2850c8d4.png
1696261337707

Get请求:动态路由,获取 Path 参数

// GET 获取path路径参数
r.GET("/book/:bid", func(c *gin.Context) {// 获取path参数bid := c.Param("bid")// 返回响应信息c.JSON(http.StatusOK, gin.H{"message": fmt.Sprintf("bid=%s", bid),})
})

测试如下:

9b15408a8ef0bf1579cb0627bc04b229.png
1696262492501

Post请求:获取 form 表单数据

为了简单演示,直接使用 apifox 执行 form 表单的请求。

// POST 请求示例:获取 form 表单的参数
r.POST("/addUser", func(c *gin.Context) {// 获取form表单参数// 使用PostForm获取单个参数username := c.PostForm("username")// DefaultPostForm如果没有设置该参数,则取默认值gender := c.DefaultPostForm("gender", "male")// PostFormArray 获取字符串数组参数hobby := c.PostFormArray("hobby")// 返回响应结果c.JSON(http.StatusOK, gin.H{"username": username,"gender":   gender,"hobby":    hobby,})
})

测试如下:

ae85ab5ad4ee8df783d1017db7a1c8a3.png
1696263335027

获取 GET POST 传递的参数数据,绑定到结构体

为了能够更方便的获取请求相关参数,提高开发效率,我们可以基于请求的 Content-Type 识别请求数据类型并利用反射机制自动提取请求中 QueryString、form 表单、JSON、XML 等参数到结构体中。

下面的示例代码演示了.ShouldBind()强大的功能,它能够基于请求自动提取 JSON、form 表单和 QueryString 类型的数据,并把值绑定到指定的结构体对象

代码示例:

  • 定义 User 结构体

// User 定义结构体,注意首字母大写
type User struct {Username string `form:"username" json:"user"`Password string `form:"password" json:"password"`
}
  • Get 传值绑定到结构体

// Get 传值绑定到结构体 /userinfo?username=jackson&password=123456
r.GET("/userinfo", func(c *gin.Context) {// 创建user对象var userinfo User// 使用ShouldBind绑定参数至对象if err := c.ShouldBind(&userinfo); err == nil {// 绑定成功,则返回结果c.JSON(http.StatusOK, userinfo)} else {// 绑定失败,则返回错误信息c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})}
})

测试如下:

58b26a92eea4d25df2a038250f0c11cb.png
1696264565233
  • Post 传值绑定到结构体

// Post 传值绑定到结构体
r.POST("/login", func(c *gin.Context) {// 创建user对象var userinfo User// 使用ShouldBind绑定参数至对象if err := c.ShouldBind(&userinfo); err == nil {// 绑定成功,则返回结果c.JSON(http.StatusOK, userinfo)} else {// 绑定失败,则返回错误信息c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})}
})

测试如下:

474e2c3953895ddea5981ea896692a2c.png
1696264705121

获取 Post Xml 数据

在 API 的开发中,我们经常会用到 JSON 或 XML 来作为数据交互的格式,这个时候我们可以在 gin 中使用 c.GetRawData()获取请求体的数据。

获取 XML 数据
  • 定义 XML 参数的结构体

// Article 定义xml参数的结构体
type Article struct {Title string `xml:"title"`Content string `xml:"content"`
}
  • 定义获取XML参数的API

// Post 获取 XML 请求体参数
r.POST("/xml", func(c *gin.Context) {// 从 c.Request.Body 读取请求数据body, _ := c.GetRawData()// 初始化结构体对象article := &Article{}// 使用xml.Unmarshal绑定参数至对象if err := xml.Unmarshal(body, &article); err == nil {// 绑定成功,则返回结果c.JSON(http.StatusOK, article)} else {// 绑定失败,则返回错误信息c.JSON(http.StatusBadRequest, err.Error())}
})
  • 测试请求xml参数

f23a781e604ce8831120a2843bec1128.png
1696265111439

请求体如下:

<?xml version="1.0" encoding="UTF-8"?>
<article><content type="string">AI大时代</content><title type="string">ChatGPT全解析</title>
</article>
获取 JSON 数据
  • 定义 JSON 数据的结构体

// RequestBody 定义json参数的结构体
type RequestBody struct {Name  string `json:"name"`Email string `json:"email"`
}
  • 定义获取JSON参数的API

// POST 获取 JSON 请求体参数
r.POST("/api/parsejson", func(c *gin.Context) {// 创建请求体的对象var reqBody RequestBody// 使用 ShouldBindJSON 将 JSON 请求体绑定到结构体if err := c.ShouldBindJSON(&reqBody); err != nil {// 如果解析失败,返回错误响应c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})return}// 打印解析后的参数fmt.Printf("Name: %s\n", reqBody.Name)fmt.Printf("Email: %s\n", reqBody.Email)// 返回成功响应c.JSON(http.StatusOK, gin.H{"message": "JSON body parsed successfully","reqBody": reqBody,})
})
  • 测试请求如下

b124c5cad68c50d3a8c1344eab1a680f.png
1696265562524
http://www.15wanjia.com/news/52869.html

相关文章:

  • 做电子商务网站建设工资多少搜索引擎国外
  • 网站升级的内容包括哪些产品推广图片
  • 那个网站效果图做的好怎样才能上百度
  • 设计师学编程能自己做网站吗网站维护的内容有哪些
  • 广东手机网站建设费用湖北seo关键词排名优化软件
  • 运城市盐湖区姚孟精诚网站开发中心劳动局免费培训电工
  • 公司网站 域名 申请 空间制作网页完整步骤代码
  • 当当网网站系统建设的意义湖南网站推广优化
  • 建站素材图片淘宝指数官网的网址
  • 有网站怎么做下载直链市场调研流程
  • 兰州网站seo收费中国国家人才培训网官网
  • 华为云做网站不能修改页面动态网站的制作与设计
  • 制作网站的页面设计怎么做灰色词秒收录代发
  • 南县人民政府门户网站怎样创建网站
  • wordpress 全屏主题舟山seo
  • 做网站订阅号百度首页清爽版
  • 企业自助建站网推广app赚钱项目
  • 淄博营销网站建设长沙百度贴吧
  • 重庆承越网站建设地址行业网络营销
  • 国外做螺栓比较好的网站最新域名解析
  • 重庆网站建设招标百度推广页面投放
  • 常州专业网站建设公司哪家好百度网盘客服电话
  • wordpress文章页面更新不出来seo排名优化公司哪家好
  • 爱彩人网站怎么做google下载
  • wordpress动态sidebar七台河网站seo
  • 额尔古纳网站建设价格品牌策划包括哪几个方面
  • wordpress欢迎新会员河南网站排名优化
  • 广州做网站专业公司百度热线电话
  • 网站建设石家庄市百度广告推广价格
  • 惠山网站建设免费建站哪个最好