获取get参数
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/", func(context *gin.Context) {
query:=context.Query("query")
context.Writer.WriteString(query)
})
r.Run(":8000")
}
浏览器访问:请求数据
同时我们的get请求还支持设置在前端没有传参的时候绑定一个默认值
query:=context.DefaultQuery("query","请求数据")
获取post参数
form_data的形式:
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
r.POST("/", func(context *gin.Context) {
query:=context.PostForm("query")
context.Writer.WriteString(query)
})
r.Run(":8000")
}
测试结果:
除了form_data和binary的方式,其他的基本都是取body
json方式:
package main
import (
"fmt"
"github.com/gin-gonic/gin"
"io/ioutil"
)
func main() {
r := gin.Default()
r.POST("/", func(context *gin.Context) {
body,err:=ioutil.ReadAll(context.Request.Body)
if err!=nil{
fmt.Println("读取body失败")
}
context.Writer.WriteString(string(body))
})
r.Run(":8000")
}
测试结果:
除此之外我们还可以把请求参数绑定到一个结构体上面去
package main
import (
"github.com/gin-gonic/gin"
)
type User struct {
UserName string `json:"user_name" xml:"user_name"`
Password string `json:"password" xml:"password"`
}
func main() {
r := gin.Default()
r.POST("/", func(context *gin.Context) {
var data User
//json绑定方式
err := context.ShouldBindJSON(&data)
//xml绑定方式
err = context.ShouldBindXML(&data)
context.Writer.WriteString("ok")
})
r.Run(":8000")
}
获取路径的参数:
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
r.GET("/user/:query", func(context *gin.Context) {
query:=context.Param("query")
context.Writer.WriteString(query)
})
r.Run(":8000")
}