【gin学习笔记】02 get post put delete请求

本文介绍了URI的基本概念,以及GET、POST、PUT、DELETE请求的使用方法,展示了如何在Gin框架中处理参数,并演示了设置默认值。重点讲解了如何从URI和请求体中提取参数,以及在不同类型的请求中传递和获取数据。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

本笔记参考了学习视频:https://www.bilibili.com/video/BV1Be411p7Jf?spm_id_from=333.1007.top_right_bar_window_history.content.click

什么是uri

要了解get, post, put, delete请求先要了解什么是uri。
有下面一段代码

package main

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

func main() {
	r := gin.Default()
	gin.Default()
	r.GET("/path/:id", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"success": true,
		})
	})
	r.Run(":8081") // listen and serve on 0.0.0.0:8080
}

像上面以:开头,后面加一个字符串的的形式组成的这样一个地址,他可以通过某一个节点挂一个占位表达式,通过表达式后面的字符串可以取出参数,这就是uri的一种形式。
可以看到path后面加了参数页面也可以正常显示。

1. get请求

get请求的参数会放在地址栏里,用明文的形式提交给后台。比如:

cur localhost:8080/path?user=abc&pwd=123456
r.GET("/path/:id", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"success": true,
		})
	})

如何请求

在这里插入图片描述
在postman中get http://127.0.0.1:8081/path/123 可以正确返回结果,同时应用日志里也抓去到了请求参数。
再比如在postman中传入user和pwd参数
在这里插入图片描述
能够正确返回请求结果,同时应用也抓到了"/path/123?user=abc&pwd=123456"这些参数

如何把uri里的参数拿出来

  1. 获取uri里面的参数
r.GET("/path/:id", func(c *gin.Context) {
		id := c.Param("id") //获取占位表达式后面的参数
		//user和pwd放在地址栏后面,所以叫query传参
		user := c.Query("user") //
		pwd := c.Query("pwd")
		c.JSON(200, gin.H{
			"id":   id,
			"user": user,
			"pwd":  pwd,
		})
	})

请求后结果如下
在这里插入图片描述
2. 设置一个参数的默认值
如果不传user或者pwd参数,如何设置一个默认值

r.GET("/path/:id", func(c *gin.Context) {
		id := c.Param("id") //获取占位表达式后面的参数
		//user和pwd放在地址栏后面,所以叫query传参
		user := c.DefaultQuery("user", "kaka") //设置user的默认值为kaka
		pwd := c.Query("pwd")
		c.JSON(200, gin.H{
			"id":   id,
			"user": user,
			"pwd":  pwd,
		})
	})

在这里插入图片描述
可以看到虽然没有传user参数,但是还是给user赋了默认值。

2. post请求

post的请求参数放在form或者body里,form即表单,body是以当前最流行的json格式进行交互。

传参并获取参数

r.POST("/path", func(c *gin.Context) {
		user := c.DefaultPostForm("user", "aaa")
		pwd := c.PostForm("pwd")
		c.JSON(200, gin.H{
			"user": user,
			"pwd":  pwd,
		})
	})

在这里插入图片描述
可以看到传入一个表单参数后,可以正确获取参数里的值。

3. delete请求

delete请求一般为uri,同样也可以用body

r.DELETE("/path/:id", func(c *gin.Context) {
		id := c.Param("id") //获取占位表达式后面的参数
		c.JSON(200, gin.H{
			"id": id,
		})
	})

delete请求实际工作中用的不多,传参和取参方法和get类似
在这里插入图片描述

4. put请求

参数在form、body或者uri里

r.PUT("/path", func(c *gin.Context) {
		user := c.DefaultPostForm("user", "aaa")
		pwd := c.PostForm("pwd")
		c.JSON(200, gin.H{
			"user": user,
			"pwd":  pwd,
		})
	})

put传参和获取参数的方法和post基本一样
在这里插入图片描述

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值