介绍
本文主要介绍 gin 框架中的 Multipart/Urlencoded 表单。通过表单功能可以读出浏览器冲传入的参数。
案例
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.POST("/form", func(c *gin.Context) {
message := c.PostForm("message")
nick := c.DefaultPostForm("nick", "anonymous")
c.JSON(200, gin.H{
"status": "posted",
"message": message,
"nick": nick,
})
})
r.Run("0.0.0.0:8080")
}
其中 c.PostForm(“message”) 获取表单中 message 的数据,如果没有message 则为空;
c.DefaultPostForm(“nick”, “anonymous”) 获取表单中 nick 的数据,如果没有设置一个默认值 anonymous;
测试
$ curl -XPOST 127.0.0.1:8080/form?message -d "message=this_is_message&nick=1"
结果:
{"message":"this_is_message","nick":"1","status":"posted"}
$ curl -XPOST 127.0.0.1:8080/form?message -d "message=this_is_message"
结构:
{"message":"this_is_message","nick":"anonymous","status":"posted"}
$ curl -XPOST 127.0.0.1:8080/form
{"message":"","nick":"anonymous","status":"posted"}
注意事项
- curl 中 -d 参数用于发送 POST 请求的数据体
使用-d参数以后,HTTP 请求会自动加上标头Content-Type : application/x-www-form-urlencoded。并且会自动将请求转为 POST 方法,因此可以省略-X POST。
-d 参数可以读取本地文本文件的数据,向服务器发送。 上面测试结果中,也可以调整为如下方式:$ cat data.txt message=this_is_message&nick=1 $ curl -d '@data.txt' 127.0.0.1:8080/form {"message":"this_is_message","nick":"1","status":"posted"}
说明
gin官方文档 Multipart/Urlencoded 表单
表单提交 multipart/form-data 和 x-www-form-urlencoded的区别
Golang Gin 框架参数解析介绍(三)
curl 的用法指南