gin框架学习-HTTP请求

前言

感谢开源项目gin-vue-admin,以及1010工作室的视频教程
本人学识尚浅,如有错误,请评论指出,谢谢!
详细可见个人博客:https://linzyblog.netlify.app/

一、HTTP请求类型

http协议中一共定义了八种方法或者称之为类型来表明对请求网络资源(Request-URI)的不同的操作方式,分别是:OPTIONS、HEAD、GET、POST、PUT、DELETE、TRACE、CONNECT。

请求内容
GET请求指定的页面信息,并返回实体主体。
POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件),数据被包含在请求体中。
DELETE请求服务器删除指定的页面。
PUT从客户端向服务器传送的数据取代指定的文档的内容。

HTTP 提供了丰富的状态码供我们使用,正确的使用状态码可以让响应数据更具可读性。

  • 200 OK - 对成功的 GET、PUT、PATCH 或 DELETE 操作进行响应。也可以被用在不创建新资源的 POST 操作上
  • 201 Created - 对创建新资源的 POST 操作进行响应。应该带着指向新资源地址的 Location 头
  • 202 Accepted - 服务器接受了请求,但是还未处理,响应中应该包含相应的指示信息,告诉客户端该去哪里查询关于本次请求的信息
  • 204 No Content - 对不会返回响应体的成功请求进行响应(比如 DELETE 请求)
  • 304 Not Modified - HTTP 缓存 header 生效的时候用
  • 400 Bad Request - 请求异常,比如请求中的 body 无法解析
  • 401 Unauthorized - 没有进行认证或者认证非法
  • 403 Forbidden - 服务器已经理解请求,但是拒绝执行它
  • 404 Not Found - 请求一个不存在的资源
  • 405 Method Not Allowed - 所请求的 HTTP 方法不允许当前认证用户访问
  • 410 Gone - 表示当前请求的资源不再可用。当调用老版本 API 的时候很有用
  • 415 Unsupported Media Type - 如果请求中的内容类型是错误的
  • 422 Unprocessable Entity - 用来表示校验错误
  • 429 Too Many Requests - 由于请求频次达到上限而被拒绝访问

在开始动手操作之前,需要先下载postman
官网下载网址:https://www.postman.com/downloads/

二、GET请求

GET请求可以看见网址中所携带的参数,参数挂载在URI和URL。

r := gin.Default() //携带基础中间件启动
	r.GET("/path/:id", func(c *gin.Context) {
		//返回URL参数的值
		id := c.Param("id")
		//查询它存在,返回键url查询值,
		//否则返回空字符串
		user := c.Query("user")
		pwd := c.Query("pwd")
		//JSON将给定的结构序列化为JSON到响应体中。
		//它还设置Content-Type为“application/json”。
		c.JSON(200, gin.H{
			"success": true,
			"id":      id,
			"user":    user,
			"pwd":     pwd,
		})
	})
r.Run(":8080") // listen and serve on 0.0.0.0:8080

这里利用Param将请求中的地址栏的id(这里是123提取出来),和用Query将后面的参数user和pwd提取出来,然后将这三个参数返回,我们成功获取到网址上的参数了!

在这里插入图片描述

在这里插入图片描述

  • 这个时候就有个问题了,如果我们的请求里面恰好没有给user或pwd,会怎么样?

在这里插入图片描述

我们发现缺少的这一项直接为空。

这个时候我们可以用DefaultQuery方法。

  • DefaultQuery:如果存在,DefaultQuery返回键控url查询值,否则返回指定的defaultValue字符串。
user := c.DefaultQuery("user", "linzy") // 此方法可以设置默认值

postman访问:http://localhost:8080/path/123?pwd=123456
在这里插入图片描述

三、POST请求

POST 请求的参数一般通过 body 传递给服务器. body 中的数据格式有很多种。

  • 表单参数可以通过PostForm()方法获取,该方法默认解析的是x-www-form-urlencoded或from-data格式的参数
r := gin.Default() //携带基础中间件启动
r.POST("/path", func(c *gin.Context) {
		user := c.DefaultPostForm("user", "linzy")
		//PostForm从POST url编码表单或多部分表单返回指定的键值
		pwd := c.PostForm("pwd")
		c.JSON(200, gin.H{
			"success": true,
			"user":    user,
			"pwd":     pwd,
		})
	})
r.Run(":8080") // listen and serve on 0.0.0.0:8080

postman访问:http://localhost:8080/path
在这里插入图片描述

四、DELETE请求

DELETE请求参数挂载在URI,用法与GET请求一样。

r := gin.Default() //携带基础中间件启动
r.DELETE("/path/:id", func(c *gin.Context) {
		id := c.Param("id")
		c.JSON(200, gin.H{
			"id": id,
		})
	})
r.Run(":8080") // listen and serve on 0.0.0.0:8080

postman访问:http://localhost:8080/path/linzy
在这里插入图片描述

五、PUT请求

PUT请求与POST请求用法一样,参数一般通过 body 传递给服务器. body 中的数据格式有很多种。

r := gin.Default() //携带基础中间件启动
r.PUT("/path", func(c *gin.Context) {
		user := c.DefaultPostForm("user", "linzy")
		pwd := c.PostForm("pwd")
		c.JSON(200, gin.H{
			"success": true,
			"user":    user,
			"pwd":     pwd,
		})
	})
r.Run(":8080") // listen and serve on 0.0.0.0:8080

postman访问:http://localhost:8080/path/linzy
在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lin钟一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值