gin获取querystring、form、url路径参数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


gin获取querystring参数

package main

import (
	"net/http"

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

func main() {

	r := gin.Default()

	r.GET("/web", func(c *gin.Context) {

		//获取浏览器那边发请求携带的query string 参数
		name := c.Query("query")
		age := c.Query("age") // 通过Query获取请求中携带的querysrting参数
		// name := c.DefaultQuery("query","somebody") // 娶不到就用指定的默认值
		// name, ok := c.GetQuery("query") //取不到第二个参数就返回false
		// if !ok {
		// 	//取不到
		// 	name = "somebody"
		// }

		c.JSON(http.StatusOK, gin.H{
			"name": name,
			"age":  age,
		})

	})
	r.Run(":9090")
}

在这里插入图片描述

gin获取form参数

package main

import (
	"net/http"

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

//获取from表单提交的参数

func main() {

	r := gin.Default()
	r.LoadHTMLFiles("./login.html", "./index.html")

	r.GET("/login", func(c *gin.Context) {
		c.HTML(http.StatusOK, "login.html", nil)

	})

	r.POST("login", func(c *gin.Context) {
			//这两行代码使用 gin.Context 的 PostForm 方法从 POST 请求的表单数据中
		//获取 username 和 password 字段的值。如果表单中没有这些字段,
		//那么 username 和 password 将会是空字符串。
		username := c.PostForm("username")
		password := c.PostForm("password")



//渲染 HTML 响应:
//这里,c.HTML 方法用于渲染一个 HTML 响应。它接受三个参数:
//第一个参数是 HTTP 状态码,这里使用了 `http.StatusOK`,即 200。  
//第二个参数是 HTML 模板的名称,这里是 `"index.html"`。这意味着 gin 会查找一个名为 `index.html` 的模板文件来渲染。  
//第三个参数是一个 `gin.H` 类型的 map,它包含了要传递给模板的数据。在这个例子中,模板会接收到两个变量:`Name` 和 `Password`,它们的值分别是 `username` 和 `password`。
		c.HTML(http.StatusOK, "index.html", gin.H{
			"Name":     username,
			"Password": password,
		})
	})
	r.Run(":9090")
	//这里,r 是一个 gin.Engine 的实例,它用于定义路由和它们的处理器。
	//POST("login", ...) 定义了一个处理 /login 路径的 POST 请求的路由。
	//当有一个 POST 请求发送到 /login 时,会执行提供的匿名函数。
}

login.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>login</title>
</head>

<body>

    <form action="/login" method="post" novalidate autocomplete="off">
        //action="/login": 这定义了表单数据提交到的URL路径。
        //method="post": 这指定了HTTP请求方法为POST,意味着表单数据将通过POST请求发送到服务器。
        //novalidate: 这告诉浏览器不要对表单进行自动验证。
        //autocomplete="off": 这尝试阻止浏览器自动完成表单字段,但这并不总是有效的,因为它取决于浏览器的实现和用户设置。
        <div>
            <label for="username">username</label>
            <input type="text" name="username" id="" username>
        </div>

        <div>
            <label for="password">password</label>
            <input type="password" name="password" id="" username>
        </div>


        <input type="submit" value="登录">
        //type="submit": 这定义了输入类型为提交按钮。
        //当用户点击此按钮时,表单数据将被发送到由 action 属性指定的URL。
    </form>

</body>

</html>

index.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>index</title>
</head>

<body>
    <h1>Hello,{{ .Name }}</h1>
    <p>你的密码是:{{ .Password}}</p>
</body>

</html>

gin获取url路径参数

package main

import (
	"net/http"

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

//获取from表单提交的参数

func main() {
	r := gin.Default()
	r.GET("user/:name/:age", func(c *gin.Context) {  要加上user,不然会出现路由不匹配,导致识别到下面的路由
		//获取路径参数
		name := c.Param("name")
		age := c.Param("age")
		c.JSON(http.StatusOK, gin.H{
			"name": name,
			"age":  age,
		})
	})
	r.GET("/blog/:year/:month", func(c *gin.Context) {
		year := c.Param("year")
		month := c.Param("month")
		c.JSON(http.StatusOK, gin.H{
			"year":  year,
			"month": month,
		})
	})
	r.Run(":9090")
}
  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值