Fast path for setting headers.

- No heap allocation
- No indirection
- CanonicalMIMEHeaderKey() is not called
This commit is contained in:
Manu Mtz-Almeida 2015-05-23 16:39:25 +02:00
parent 35fd7fb480
commit a2105ce34c
4 changed files with 9 additions and 9 deletions

View File

@ -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 {
return HTML{
@ -58,6 +58,6 @@ func (r HTMLDebug) loadTemplate() *template.Template {
}
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)
}

View File

@ -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 {
w.Header().Set("Content-Type", jsonContentType)
w.Header()["Content-Type"] = jsonContentType
return json.NewEncoder(w).Encode(r.Data)
}
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, "", " ")
if err != nil {
return err

View File

@ -14,12 +14,12 @@ type String struct {
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 {
header := w.Header()
if _, exist := header["Content-Type"]; !exist {
header.Set("Content-Type", plainContentType)
header["Content-Type"] = plainContentType
}
if len(r.Data) > 0 {
fmt.Fprintf(w, r.Format, r.Data...)

View File

@ -13,9 +13,9 @@ type XML struct {
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 {
w.Header().Set("Content-Type", xmlContentType)
w.Header()["Content-Type"] = xmlContentType
return xml.NewEncoder(w).Encode(r.Data)
}