From 656d1bbbd6630d0e98c08360b627e2932bd698e4 Mon Sep 17 00:00:00 2001 From: John Guo Date: Fri, 17 Dec 2021 17:42:18 +0800 Subject: [PATCH] improve content type response for ghttp.Server --- net/ghttp/ghttp.go | 3 +++ net/ghttp/ghttp_response_view.go | 3 +++ net/ghttp/ghttp_response_write.go | 8 +++----- os/gview/gview_buildin.go | 1 + 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/net/ghttp/ghttp.go b/net/ghttp/ghttp.go index 0b60cf717..b8cb9d638 100644 --- a/net/ghttp/ghttp.go +++ b/net/ghttp/ghttp.go @@ -129,6 +129,9 @@ const ( methodNameShut = "Shut" methodNameExit = "Exit" ctxKeyForRequest = "gHttpRequestObject" + contentTypeXml = "text/xml" + contentTypeHtml = "text/html" + contentTypeJson = "application/json" swaggerUIPackedPath = "/goframe/swaggerui" ) diff --git a/net/ghttp/ghttp_response_view.go b/net/ghttp/ghttp_response_view.go index bfc8c6287..ed733c998 100644 --- a/net/ghttp/ghttp_response_view.go +++ b/net/ghttp/ghttp_response_view.go @@ -18,6 +18,7 @@ import ( // WriteTpl parses and responses given template file. // The parameter `params` specifies the template variables for parsing. func (r *Response) WriteTpl(tpl string, params ...gview.Params) error { + r.Header().Set("Content-Type", contentTypeHtml) b, err := r.ParseTpl(tpl, params...) if err != nil { if !gmode.IsProduct() { @@ -32,6 +33,7 @@ func (r *Response) WriteTpl(tpl string, params ...gview.Params) error { // WriteTplDefault parses and responses the default template file. // The parameter `params` specifies the template variables for parsing. func (r *Response) WriteTplDefault(params ...gview.Params) error { + r.Header().Set("Content-Type", contentTypeHtml) b, err := r.ParseTplDefault(params...) if err != nil { if !gmode.IsProduct() { @@ -46,6 +48,7 @@ func (r *Response) WriteTplDefault(params ...gview.Params) error { // WriteTplContent parses and responses the template content. // The parameter `params` specifies the template variables for parsing. func (r *Response) WriteTplContent(content string, params ...gview.Params) error { + r.Header().Set("Content-Type", contentTypeHtml) b, err := r.ParseTplContent(content, params...) if err != nil { if !gmode.IsProduct() { diff --git a/net/ghttp/ghttp_response_write.go b/net/ghttp/ghttp_response_write.go index 038628b98..e7923e352 100644 --- a/net/ghttp/ghttp_response_write.go +++ b/net/ghttp/ghttp_response_write.go @@ -103,10 +103,10 @@ func (r *Response) WriteflnExit(format string, params ...interface{}) { // WriteJson writes `content` to the response with JSON format. func (r *Response) WriteJson(content interface{}) error { + r.Header().Set("Content-Type", contentTypeJson) // If given string/[]byte, response it directly to client. switch content.(type) { case string, []byte: - r.Header().Set("Content-Type", "application/json") r.Write(gconv.String(content)) return nil } @@ -114,7 +114,6 @@ func (r *Response) WriteJson(content interface{}) error { if b, err := json.Marshal(content); err != nil { return err } else { - r.Header().Set("Content-Type", "application/json") r.Write(b) } return nil @@ -135,10 +134,10 @@ func (r *Response) WriteJsonExit(content interface{}) error { // // Note that there should be a "callback" parameter in the request for JSONP format. func (r *Response) WriteJsonP(content interface{}) error { + r.Header().Set("Content-Type", contentTypeJson) // If given string/[]byte, response it directly to client. switch content.(type) { case string, []byte: - r.Header().Set("Content-Type", "application/json") r.Write(gconv.String(content)) return nil } @@ -175,17 +174,16 @@ func (r *Response) WriteJsonPExit(content interface{}) error { // WriteXml writes `content` to the response with XML format. func (r *Response) WriteXml(content interface{}, rootTag ...string) error { + r.Header().Set("Content-Type", contentTypeXml) // If given string/[]byte, response it directly to client. switch content.(type) { case string, []byte: - r.Header().Set("Content-Type", "application/xml") r.Write(gconv.String(content)) return nil } if b, err := gjson.New(content).ToXml(rootTag...); err != nil { return err } else { - r.Header().Set("Content-Type", "application/xml") r.Write(b) } return nil diff --git a/os/gview/gview_buildin.go b/os/gview/gview_buildin.go index 82ee14641..7df38e75d 100644 --- a/os/gview/gview_buildin.go +++ b/os/gview/gview_buildin.go @@ -25,6 +25,7 @@ import ( // buildInFuncDump implements build-in template function: dump func (view *View) buildInFuncDump(values ...interface{}) string { buffer := bytes.NewBuffer(nil) + buffer.WriteString("\n") buffer.WriteString("