diff --git a/context.go b/context.go index f638e623..923bb885 100644 --- a/context.go +++ b/context.go @@ -7,6 +7,7 @@ package gin import ( "errors" "io" + "io/ioutil" "math" "mime/multipart" "net" @@ -445,6 +446,12 @@ func (c *Context) GetHeader(key string) string { return c.requestHeader(key) } +// GetRawData return stream data +func (c *Context) GetRawData() (body []byte, err error) { + body, err = ioutil.ReadAll(c.Request.Body) + return +} + func (c *Context) SetCookie( name string, value string, diff --git a/context_test.go b/context_test.go index 52606281..0feeca89 100644 --- a/context_test.go +++ b/context_test.go @@ -1016,3 +1016,14 @@ func TestGetRequestHeaderValue(t *testing.T) { assert.Equal(t, "1.0.0", c.GetHeader("Gin-Version")) assert.Equal(t, "", c.GetHeader("Connection")) } + +func TestContextGetRawData(t *testing.T) { + c, _ := CreateTestContext(httptest.NewRecorder()) + body := bytes.NewBufferString("Fetch binary post data") + c.Request, _ = http.NewRequest("POST", "/", body) + c.Request.Header.Add("Content-Type", MIMEPOSTForm) + + data, err := c.GetRawData() + assert.Nil(t, err) + assert.Equal(t, "Fetch binary post data", string(data)) +}