From d9415524aa50e87f91890a2cfa644721bfb0774d Mon Sep 17 00:00:00 2001 From: Maneesh Babu M Date: Fri, 23 Apr 2021 02:53:53 +0000 Subject: [PATCH] Add Resp response format for controller --- server/web/controller.go | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/server/web/controller.go b/server/web/controller.go index 6a29c79e..2648a544 100644 --- a/server/web/controller.go +++ b/server/web/controller.go @@ -21,8 +21,6 @@ import ( "encoding/xml" "errors" "fmt" - "github.com/gogo/protobuf/proto" - "gopkg.in/yaml.v2" "html/template" "io" "mime/multipart" @@ -37,6 +35,8 @@ import ( "github.com/beego/beego/v2/server/web/context" "github.com/beego/beego/v2/server/web/context/param" "github.com/beego/beego/v2/server/web/session" + "github.com/gogo/protobuf/proto" + "gopkg.in/yaml.v2" ) var ( @@ -436,6 +436,22 @@ func (c *Controller) URLFor(endpoint string, values ...interface{}) string { } return URLFor(endpoint, values...) } +// Resp sends response based on the Accept Header +// By default response will be in JSON +func (c *Controller) Resp(data interface{}) error { + accept := c.Ctx.Input.Header("Accept") + switch accept { + case context.ApplicationYAML: + c.Data["yaml"] = data + return c.ServeYAML() + case context.ApplicationXML, context.TextXML: + c.Data["xml"] = data + return c.ServeXML() + default: + c.Data["json"] = data + return c.ServeJSON() + } +} // ServeJSON sends a json response with encoding charset. func (c *Controller) ServeJSON(encoding ...bool) error {