From cff8a64124d1af3b5c7b9609780811baf0d40cb7 Mon Sep 17 00:00:00 2001 From: snowy Date: Fri, 16 Aug 2024 19:50:47 +0800 Subject: [PATCH 1/3] docs(hertz): Add method PostFormArray to app.RequestContext. --- .../basic-feature/context/request.md | 25 +++++++++++++++++++ .../basic-feature/context/request.md | 25 +++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/content/en/docs/hertz/tutorials/basic-feature/context/request.md b/content/en/docs/hertz/tutorials/basic-feature/context/request.md index b3ea55a11fa..3fd0ba3a09b 100644 --- a/content/en/docs/hertz/tutorials/basic-feature/context/request.md +++ b/content/en/docs/hertz/tutorials/basic-feature/context/request.md @@ -730,6 +730,7 @@ func (ctx *RequestContext) Body() ([]byte, error) func (ctx *RequestContext) RequestBodyStream() io.Reader func (ctx *RequestContext) MultipartForm() (*multipart.Form, error) func (ctx *RequestContext) PostForm(key string) string +func (ctx *RequestContext) PostFormArray(key string) []string func (ctx *RequestContext) DefaultPostForm(key, defaultValue string) string func (ctx *RequestContext) GetPostForm(key string) (string, bool) func (ctx *RequestContext) PostArgs() *protocol.Args @@ -830,6 +831,30 @@ h.POST("/user", func(ctx context.Context, c *app.RequestContext) { }) ``` +### PostFormArray + +Retrieve `multipart.Form.Value` by name and return all values of the given name. + +> Note: This function supports obtaining values from content-type of application/x-www form urlencoded and multipart/form data, and does not support obtaining file values. + +Function Signature: + +```go +func (ctx *RequestContext) PostFormArray(key string) []string +``` + +Example Code: + +```go +// POST http://example.com/user +// Content-Type: multipart/form-data; +// Content-Disposition: form-data; name="pet"; value="cat" +// Content-Disposition: form-data; name="pet"; value="dog" +h.POST("/user", func(ctx context.Context, c *app.RequestContext) { + pets := c.PostFormArray("pet") // pets == []string{"cat", "dog"} +}) +``` + ### DefaultPostForm Retrieve `multipart.Form.Value` by name and return the first value of the given name. If it does not exist, return defaultValue. diff --git a/content/zh/docs/hertz/tutorials/basic-feature/context/request.md b/content/zh/docs/hertz/tutorials/basic-feature/context/request.md index 6c3f435bef8..f627be83f95 100644 --- a/content/zh/docs/hertz/tutorials/basic-feature/context/request.md +++ b/content/zh/docs/hertz/tutorials/basic-feature/context/request.md @@ -730,6 +730,7 @@ func (ctx *RequestContext) Body() ([]byte, error) func (ctx *RequestContext) RequestBodyStream() io.Reader func (ctx *RequestContext) MultipartForm() (*multipart.Form, error) func (ctx *RequestContext) PostForm(key string) string +func (ctx *RequestContext) PostFormArray(key string) []string func (ctx *RequestContext) DefaultPostForm(key, defaultValue string) string func (ctx *RequestContext) GetPostForm(key string) (string, bool) func (ctx *RequestContext) PostArgs() *protocol.Args @@ -830,6 +831,30 @@ h.POST("/user", func(ctx context.Context, c *app.RequestContext) { }) ``` +### PostFormArray + +按名称检索 `multipart.Form.Value`,返回给定 name 的所有值。 + +> 注意:该函数支持从 application/x-www-form-urlencoded 和 multipart/form-data 这两种类型的 content-type 中获取 value 值,且不支持获取文件值。 + +函数签名: + +```go +func (ctx *RequestContext) PostFormArray(key string) []string +``` + +示例: + +```go +// POST http://example.com/user +// Content-Type: multipart/form-data; +// Content-Disposition: form-data; name="pet"; value="cat" +// Content-Disposition: form-data; name="pet"; value="dog" +h.POST("/user", func(ctx context.Context, c *app.RequestContext) { + pets := c.PostFormArray("pet") // pets == []string{"cat", "dog"} +}) +``` + ### DefaultPostForm 按名称检索 `multipart.Form.Value`,返回给定 name 的第一个值,如果不存在返回 defaultValue。 From 67a19609ee13b2b306c5c873f18aa730cfcb97b8 Mon Sep 17 00:00:00 2001 From: snowykami Date: Fri, 6 Sep 2024 01:43:28 +0800 Subject: [PATCH 2/3] docs(hertz): Add method PostFormMap to app.RequestContext. --- .../basic-feature/context/request.md | 27 +++++++++++++++++++ .../basic-feature/context/request.md | 27 +++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/content/en/docs/hertz/tutorials/basic-feature/context/request.md b/content/en/docs/hertz/tutorials/basic-feature/context/request.md index 3fd0ba3a09b..92686c24fce 100644 --- a/content/en/docs/hertz/tutorials/basic-feature/context/request.md +++ b/content/en/docs/hertz/tutorials/basic-feature/context/request.md @@ -731,8 +731,11 @@ func (ctx *RequestContext) RequestBodyStream() io.Reader func (ctx *RequestContext) MultipartForm() (*multipart.Form, error) func (ctx *RequestContext) PostForm(key string) string func (ctx *RequestContext) PostFormArray(key string) []string +func (ctx *RequestContext) PostFormMap(key string) map[string][]string func (ctx *RequestContext) DefaultPostForm(key, defaultValue string) string func (ctx *RequestContext) GetPostForm(key string) (string, bool) +func (ctx *RequestContext) GetPostFormArray(key string) ([]string, bool) +func (ctx *RequestContext) GetPostFormMap(key string) map[string][]string func (ctx *RequestContext) PostArgs() *protocol.Args func (ctx *RequestContext) FormValue(key string) []byte func (ctx *RequestContext) SetFormValueFunc(f FormValueFunc) @@ -855,6 +858,30 @@ h.POST("/user", func(ctx context.Context, c *app.RequestContext) { }) ``` +### PostFormMap + +Retrieve `multipart.Form.Value` by name and return a map of all values of the given name. + +> Note: This function supports obtaining values from content-type of application/x-www form urlencoded and multipart/form data, and does not support obtaining file values. + +Function Signature: + +```go +func (ctx *RequestContext) PostFormMap(key string) map[string][]string +``` + +Example Code: + +```go +// POST http://example.com/user +// Content-Type: multipart/form-data; +// Content-Disposition: form-data; name="attr[k1]"; value="v1" +// Content-Disposition: form-data; name="attr[k2]"; value="v2" +h.POST("/user", func(ctx context.Context, c *app.RequestContext) { + attrs := c.PostFormMap("attr") // attrs == map[string][]string{"k1": {"v1"}, "k2": {"v2"}} +}) +``` + ### DefaultPostForm Retrieve `multipart.Form.Value` by name and return the first value of the given name. If it does not exist, return defaultValue. diff --git a/content/zh/docs/hertz/tutorials/basic-feature/context/request.md b/content/zh/docs/hertz/tutorials/basic-feature/context/request.md index f627be83f95..d74b99e26c4 100644 --- a/content/zh/docs/hertz/tutorials/basic-feature/context/request.md +++ b/content/zh/docs/hertz/tutorials/basic-feature/context/request.md @@ -731,8 +731,11 @@ func (ctx *RequestContext) RequestBodyStream() io.Reader func (ctx *RequestContext) MultipartForm() (*multipart.Form, error) func (ctx *RequestContext) PostForm(key string) string func (ctx *RequestContext) PostFormArray(key string) []string +func (ctx *RequestContext) PostFormMap(key string) map[string][]string func (ctx *RequestContext) DefaultPostForm(key, defaultValue string) string func (ctx *RequestContext) GetPostForm(key string) (string, bool) +func (ctx *RequestContext) GetPostFormArray(key string) ([]string, bool) +func (ctx *RequestContext) GetPostFormMap(key string) (map[string][]string, bool) func (ctx *RequestContext) PostArgs() *protocol.Args func (ctx *RequestContext) FormValue(key string) []byte func (ctx *RequestContext) SetFormValueFunc(f FormValueFunc) @@ -855,6 +858,30 @@ h.POST("/user", func(ctx context.Context, c *app.RequestContext) { }) ``` +### PostFormMap + +按名称检索 `multipart.Form.Value`,返回所有值的 map。 + +> 注意:该函数支持从 application/x-www-form-urlencoded 和 multipart/form-data 这两种类型的 content-type 中获取 value 值,且不支持获取文件值。 + +函数签名: + +```go +func (ctx *RequestContext) PostFormMap(key string) map[string][]string +``` + +示例: + +```go +// POST http://example.com/user +// Content-Type: multipart/form-data; +// Content-Disposition: form-data; name="attr[k1]"; value="v1" +// Content-Disposition: form-data; name="attr[k2]"; value="v2" +h.POST("/user", func(ctx context.Context, c *app.RequestContext) { + attrs := c.PostFormMap("attr") // attrs == map[string][]string{"k1": {"v1"}, "k2": {"v2"}} +}) +``` + ### DefaultPostForm 按名称检索 `multipart.Form.Value`,返回给定 name 的第一个值,如果不存在返回 defaultValue。 From 584a88ae5dac73559118228b568ee8de02245f66 Mon Sep 17 00:00:00 2001 From: snowykami Date: Fri, 6 Sep 2024 01:45:07 +0800 Subject: [PATCH 3/3] docs(hertz): Add method PostFormMap to app.RequestContext. --- .../en/docs/hertz/tutorials/basic-feature/context/request.md | 2 +- .../zh/docs/hertz/tutorials/basic-feature/context/request.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/docs/hertz/tutorials/basic-feature/context/request.md b/content/en/docs/hertz/tutorials/basic-feature/context/request.md index 92686c24fce..65d1e401da3 100644 --- a/content/en/docs/hertz/tutorials/basic-feature/context/request.md +++ b/content/en/docs/hertz/tutorials/basic-feature/context/request.md @@ -878,7 +878,7 @@ Example Code: // Content-Disposition: form-data; name="attr[k1]"; value="v1" // Content-Disposition: form-data; name="attr[k2]"; value="v2" h.POST("/user", func(ctx context.Context, c *app.RequestContext) { - attrs := c.PostFormMap("attr") // attrs == map[string][]string{"k1": {"v1"}, "k2": {"v2"}} + attrs := c.PostFormMap("attr") // attrs == map[string][]string{"k1": "v1", "k2": "v2"} }) ``` diff --git a/content/zh/docs/hertz/tutorials/basic-feature/context/request.md b/content/zh/docs/hertz/tutorials/basic-feature/context/request.md index d74b99e26c4..2d0b6c62c5d 100644 --- a/content/zh/docs/hertz/tutorials/basic-feature/context/request.md +++ b/content/zh/docs/hertz/tutorials/basic-feature/context/request.md @@ -878,7 +878,7 @@ func (ctx *RequestContext) PostFormMap(key string) map[string][]string // Content-Disposition: form-data; name="attr[k1]"; value="v1" // Content-Disposition: form-data; name="attr[k2]"; value="v2" h.POST("/user", func(ctx context.Context, c *app.RequestContext) { - attrs := c.PostFormMap("attr") // attrs == map[string][]string{"k1": {"v1"}, "k2": {"v2"}} + attrs := c.PostFormMap("attr") // attrs == map[string][]string{"k1": "v1", "k2": "v2"} }) ```