mirror of
https://github.com/kataras/iris.git
synced 2025-12-20 03:17:04 +00:00
respect the WithoutBodyConsumptionOnUnmarshal on 'ctx.ReadForm' and 'ctx.FormValues' and on the new 'ctx.GetBody' method helper as requested at: #1297
Former-commit-id: c6a52681c940681ac85a330465d38a078186a8a1
This commit is contained in:
60
_examples/http_request/read-many/main.go
Normal file
60
_examples/http_request/read-many/main.go
Normal file
@@ -0,0 +1,60 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"github.com/kataras/iris"
|
||||
)
|
||||
|
||||
func main() {
|
||||
app := iris.New()
|
||||
|
||||
app.Post("/", logAllBody, logJSON, logFormValues, func(ctx iris.Context) {
|
||||
body, err := ctx.GetBody()
|
||||
if err != nil {
|
||||
ctx.Writef("error while reading the requested body: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
if len(body) == 0 {
|
||||
ctx.WriteString(`The body was empty
|
||||
or iris.WithoutBodyConsumptionOnUnmarshal option is missing from app.Run.
|
||||
Check the terminal window for any queries logs.`)
|
||||
|
||||
} else {
|
||||
ctx.WriteString("OK body is still:\n")
|
||||
ctx.Write(body)
|
||||
}
|
||||
})
|
||||
|
||||
// With ctx.UnmarshalBody, ctx.ReadJSON, ctx.ReadXML, ctx.ReadForm, ctx.FormValues
|
||||
// and ctx.GetBody methods the default golang and net/http behavior
|
||||
// is to consume the readen data - they are not available on any next handlers in the chain -
|
||||
// to change that behavior just pass the `WithoutBodyConsumptionOnUnmarshal` option.
|
||||
app.Run(iris.Addr(":8080"), iris.WithoutBodyConsumptionOnUnmarshal)
|
||||
}
|
||||
|
||||
func logAllBody(ctx iris.Context) {
|
||||
body, err := ctx.GetBody()
|
||||
if err == nil && len(body) > 0 {
|
||||
ctx.Application().Logger().Infof("logAllBody: %s", string(body))
|
||||
}
|
||||
|
||||
ctx.Next()
|
||||
}
|
||||
|
||||
func logJSON(ctx iris.Context) {
|
||||
var p interface{}
|
||||
if err := ctx.ReadJSON(&p); err == nil {
|
||||
ctx.Application().Logger().Infof("logJSON: %#+v", p)
|
||||
}
|
||||
|
||||
ctx.Next()
|
||||
}
|
||||
|
||||
func logFormValues(ctx iris.Context) {
|
||||
values := ctx.FormValues()
|
||||
if values != nil {
|
||||
ctx.Application().Logger().Infof("logFormValues: %v", values)
|
||||
}
|
||||
|
||||
ctx.Next()
|
||||
}
|
||||
Reference in New Issue
Block a user