gin Http请求Body和Header的获取 request post form Query header

gin Http请求Body和Header的获取 request post form Query header

请求参数

复制代码
POST /post?id=1234&page=1 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
testtest
name=manu&message=this_is_great

服务端代码

复制代码
package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"io/ioutil"
)

func main() {
	router := gin.Default()

	router.POST("/test", func(c *gin.Context) {
                // 查询请求URL后面拼接的参数
		id := c.Query("id")
		//查询请求URL后面的参数,如果没有填写默认值
		page := c.DefaultQuery("page", "0")
		// 从表单中查询参数
		name := c.PostForm("name")
		//从取得URL中参数,此处URL中没有name字段
		name = c.Param("name")
		// 从表单中查询参数,,如果没有就获取默认值
		message := c.DefaultPostForm("message", "default")
                // 获取Body值
		bodyBytes, _ := ioutil.ReadAll(c.Request.Body)
                // 获取header指定字段
		headerTest := c.Request.Header.Get("test")
		for k, v := range c.Request.Header {
			fmt.Println(k, v)
		}
		fmt.Printf("id: %s; page: %s; name: %s; message: %s; header_test:%s; bodyBytes:%s", id, page, name, message, headerTest, bodyBytes)
	})
	router.Run(":8080")
}

postman请求

请求打印

复制代码
Accept [*/*]
Postman-Token [fb0ab2f2-8653-4fc9-9dce-a18ed349d113]
Accept-Encoding [gzip, deflate]
Content-Length [31]
User-Agent [PostmanRuntime/7.15.0]
Test [test123]
Cache-Control [no-cache]
Connection [keep-alive]
Content-Type [application/x-www-form-urlencoded]
id: 123; page: 1; name: ; message: this_is_great; header_test:test123; bodyBytes:

gin文档:https://gin-gonic.com/zh-cn/docs/examples/query-and-post-form/

posted @   牛奔  阅读(331)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2019-11-18 RabbitMQ+PHP教程
点击右上角即可分享
微信分享提示