mirror of
https://gitee.com/johng/gf
synced 2026-06-07 02:12:11 +08:00
improve content type response for ghttp.Server
This commit is contained in:
@ -129,6 +129,9 @@ const (
|
||||
methodNameShut = "Shut"
|
||||
methodNameExit = "Exit"
|
||||
ctxKeyForRequest = "gHttpRequestObject"
|
||||
contentTypeXml = "text/xml"
|
||||
contentTypeHtml = "text/html"
|
||||
contentTypeJson = "application/json"
|
||||
swaggerUIPackedPath = "/goframe/swaggerui"
|
||||
)
|
||||
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -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
|
||||
|
||||
Reference in New Issue
Block a user