mirror of https://github.com/gin-gonic/gin.git
Fast path for setting headers.
- No heap allocation - No indirection - CanonicalMIMEHeaderKey() is not called
This commit is contained in:
parent
35fd7fb480
commit
a2105ce34c
|
@ -30,7 +30,7 @@ type (
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
const htmlContentType = "text/html; charset=utf-8"
|
var htmlContentType = []string{"text/html; charset=utf-8"}
|
||||||
|
|
||||||
func (r HTMLProduction) Instance(name string, data interface{}) Render {
|
func (r HTMLProduction) Instance(name string, data interface{}) Render {
|
||||||
return HTML{
|
return HTML{
|
||||||
|
@ -58,6 +58,6 @@ func (r HTMLDebug) loadTemplate() *template.Template {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r HTML) Write(w http.ResponseWriter) error {
|
func (r HTML) Write(w http.ResponseWriter) error {
|
||||||
w.Header().Set("Content-Type", htmlContentType)
|
w.Header()["Content-Type"] = htmlContentType
|
||||||
return r.Template.ExecuteTemplate(w, r.Name, r.Data)
|
return r.Template.ExecuteTemplate(w, r.Name, r.Data)
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,15 +19,15 @@ type (
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
const jsonContentType = "application/json; charset=utf-8"
|
var jsonContentType = []string{"application/json; charset=utf-8"}
|
||||||
|
|
||||||
func (r JSON) Write(w http.ResponseWriter) error {
|
func (r JSON) Write(w http.ResponseWriter) error {
|
||||||
w.Header().Set("Content-Type", jsonContentType)
|
w.Header()["Content-Type"] = jsonContentType
|
||||||
return json.NewEncoder(w).Encode(r.Data)
|
return json.NewEncoder(w).Encode(r.Data)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r IndentedJSON) Write(w http.ResponseWriter) error {
|
func (r IndentedJSON) Write(w http.ResponseWriter) error {
|
||||||
w.Header().Set("Content-Type", jsonContentType)
|
w.Header()["Content-Type"] = jsonContentType
|
||||||
jsonBytes, err := json.MarshalIndent(r.Data, "", " ")
|
jsonBytes, err := json.MarshalIndent(r.Data, "", " ")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -14,12 +14,12 @@ type String struct {
|
||||||
Data []interface{}
|
Data []interface{}
|
||||||
}
|
}
|
||||||
|
|
||||||
const plainContentType = "text/plain; charset=utf-8"
|
var plainContentType = []string{"text/plain; charset=utf-8"}
|
||||||
|
|
||||||
func (r String) Write(w http.ResponseWriter) error {
|
func (r String) Write(w http.ResponseWriter) error {
|
||||||
header := w.Header()
|
header := w.Header()
|
||||||
if _, exist := header["Content-Type"]; !exist {
|
if _, exist := header["Content-Type"]; !exist {
|
||||||
header.Set("Content-Type", plainContentType)
|
header["Content-Type"] = plainContentType
|
||||||
}
|
}
|
||||||
if len(r.Data) > 0 {
|
if len(r.Data) > 0 {
|
||||||
fmt.Fprintf(w, r.Format, r.Data...)
|
fmt.Fprintf(w, r.Format, r.Data...)
|
||||||
|
|
|
@ -13,9 +13,9 @@ type XML struct {
|
||||||
Data interface{}
|
Data interface{}
|
||||||
}
|
}
|
||||||
|
|
||||||
const xmlContentType = "application/xml; charset=utf-8"
|
var xmlContentType = []string{"application/xml; charset=utf-8"}
|
||||||
|
|
||||||
func (r XML) Write(w http.ResponseWriter) error {
|
func (r XML) Write(w http.ResponseWriter) error {
|
||||||
w.Header().Set("Content-Type", xmlContentType)
|
w.Header()["Content-Type"] = xmlContentType
|
||||||
return xml.NewEncoder(w).Encode(r.Data)
|
return xml.NewEncoder(w).Encode(r.Data)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue