首页 > 其他分享 >Gin GET POST 以及获取GET POST传值

Gin GET POST 以及获取GET POST传值

时间:2024-01-17 11:16:05浏览次数:24  
标签:username http err GET age sex gin Gin POST

Gin GET POST 以及获取GET POST传值

1Get 请求传值

package main

import (
	"net/http"

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

func main() {
	r := gin.Default()
	// http://127.0.0.1:8000/query?username=111&age=10&sex=
	// {"age":"10","sex":"","username":"111"}
	// http://127.0.0.1:8000/query?username=111&age=10
	// {"age":"10","sex":"0","username":"111"}
	r.GET("/query", func(c *gin.Context) {
		username := c.Query("username")
		age := c.Query("age")
		sex := c.DefaultQuery("sex", "0") // 如果不传值 则使用默认值
		c.JSON(http.StatusOK, gin.H{
			"username": username,
			"age":      age,
			"sex":      sex,
		})
	})
	r.Run(":8000")
}

2.POST取值

package main

import (
	"net/http"

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

func main() {
	r := gin.Default()
	r.POST("/add", func(c *gin.Context) {
		username := c.PostForm("username")
		age := c.PostForm("age")
		sex := c.DefaultPostForm("sex", "1")
		c.JSON(http.StatusOK, gin.H{
			"username": username,
			"age":      age,
			"sex":      sex,
		})
	})
	r.Run(":8000")
}

3 将GET或者POST的数据绑定到结构体上

package main

import (
	"net/http"

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

type UserInfo struct {
	Username string `json:"username" form:"username"` // 需要用到form标签,需要和传过来的key相同
	Age      string `json:"age" form:"age"`
	Sex      string `json:"sex" form:"sex"`
}

func main() {
	r := gin.Default()
	r.POST("/add1", func(c *gin.Context) {
		userinfo := UserInfo{}
		if err := c.ShouldBind(&userinfo); err != nil {
			c.JSON(http.StatusOK, gin.H{
				"err": err.Error(),
			})
		} else {
			c.JSON(http.StatusOK, userinfo)
		}
	})

	r.GET("/add2", func(c *gin.Context) {
		userinfo := UserInfo{}
		if err := c.ShouldBind(&userinfo); err != nil {
			c.JSON(http.StatusOK, gin.H{
				"err": err.Error(),
			})
		} else {
			c.JSON(http.StatusOK, userinfo)
		}
	})
	r.Run(":8000")
}


4 获取Post Xml数据

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

<?xml version="1.0" encoding="UTF-8"?>
<userinfo>
    <username type="string">我是张三</username>
    <age type="string">20</age>
    <sex type="string">88888</sex>
</userinfo>


package main

import (
	"encoding/xml"
	"net/http"

	"github.com/gin-gonic/gin"
)
type UserInfo struct {
	Username string `json:"username" form:"username" xml:"username"` // 需要使用到xml标签,名称与传递过来的xml中的标签名称相同
	Age      string `json:"age" form:"age" xml:"age"`
	Sex      string `json:"sex" form:"sex" xml:"sex"`
}

func main() {
	r := gin.Default()
	r.POST("/postxml", func(c *gin.Context) {
		xmldata, _ := c.GetRawData() // 从c.Request.Body 读取请求数据
		userinfo := UserInfo{}
		if err := xml.Unmarshal(xmldata, &userinfo); err != nil {
			c.JSON(http.StatusOK, gin.H{
				"err": err.Error(),
			})
		}
		c.JSON(http.StatusOK, userinfo)
	})
	r.Run(":8000")
}

5 动态路由传值

package main

import (
	"encoding/xml"
	"net/http"

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

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

	r.GET("/uer/:uid", func(c *gin.Context) {
		uid := c.Param("uid")
		c.String(http.StatusOK, uid)
	})
	r.Run(":8000")
}

标签:username,http,err,GET,age,sex,gin,Gin,POST
From: https://www.cnblogs.com/chunyouqudongwuyuan/p/17969478

相关文章

  • Gin 控制器的继承,自定义方法
    Gin控制器的继承,自定义方法1我们想直接获取到int类型的数据怎么办/* 当我们获取Get参数时都时获取到的都是string类型,有时候我们想直接获取到int类型,我们就需要转换,如果需要转换的地方多了也会很麻烦, 那我们可以怎么办 解决办法很简单,我们可以写一个baseController来实......
  • Gin控制器分离
    Gin控制器分离1函数式/* apiRouters.GET("/",func(c*gin.Context){ c.String(200,"我是一个api接口") }) 这样的一个路由注册我们发现,后面都跟了一个匿名函数,那我们将这个匿名函数全部取出来放在一个固定的地方就可以实现路由和业务逻辑的分离了*/1.1将adminRou......
  • Gin单文件上传以及多文件上传
    Gin单文件上传以及多文件上传1单文件上传funcmain(){router:=gin.Default()//为multipartforms设置较低的内存限制(默认是32MiB)//router.MaxMultipartMemory=8<<20//8MiBrouter.POST("/upload",func(c*gin.Context){file......
  • Gin中间件
    Gin中间件1中间件简介/* Gin框架允许开发者在处理请求的过程中,加入用户自己的钩子(Hook)函数。这个钩子函数就叫中间件,中间件适合处理一些公共的业务逻辑,比如登录认证、权限校验、数据分页、记录日志、耗时统计等。*/在gin中的Default的方法中已经有两个中间件了://Defaul......
  • Gin 文件上传 按照日期存储
    Gin文件上传按照日期存储1实现步骤/* 1.获取上传的文件 2.获取后缀名判断类型是否正确.jpg.png.gif.jpeg 3.创建图片保存目录static/upload/20240101 4.生成文件名称和文件保存的目录 5.保存*/2代码//获取当前的日期funcGetDay()string{ template:="......
  • Gin中的Session
    Gin中的Session1Session简单介绍session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而session保存在服务器上。2Session的工作流程当客户端浏览器第一次访问服务器并发送请求时,服务器端会创建一个session对象,生成一个类似于key,value的键值对,然后将va......
  • Gin中的Cookie
    Gin中的Cookie1Cookie简介/* ●HTTP是无状态协议。简单地说,当你浏览了一个页面,然后转到同一个网站的另一个页面,服务器无法认识到这是同一个浏览器在访问同一个网站。每一次的访问,都是没有任何关系的。如果我们要实现多个页面之间共享数据的话我们就可以使用Cookie或者Sessio......
  • GIn入门
    Gin入门1.Gin安装goget-ugithub.com/gin-gonic/gin2.将gin引入到代码中:import"github.com/gin-gonic/gin"2.1(可选)如果使用诸如http.StatusOK之类的常量,则需要引入net/http包:import"net/http"2.2初始化gomodgomodinit/*生成go.mod文件,此命令会在当......
  • 出现了HTTPSConnectionPool(host=‘huggingface.co‘, port=443)错误的解决方法
    在下载huggingface模型的时候,经常会出现这个错误,HTTPSConnectionPool(host=‘huggingface.co’,port=443)。如在下载Tokenizer的时候,tokenizer=AutoTokenizer.from_pretrained("csebuetnlp/mT5_multilingual_XLSum")就会出现以上的错误HTTPSConnectionPool(host=‘hug......
  • getx getbuilder使用方法
    CounterBinding:classCounterBindingextendsBindings{@overridevoiddependencies(){Get.lazyPut(()=>CounterController());}}CounterController:classCounterControllerextendsGetxController{intcount=0;voidincrease(){......