Golang 1.6: 使用mime.TypeByExtension来设置Content-Type

看到很多设置 ResponseWriterContent-Type 属性都是直接在代码里写MIME类型,其实Golang中有根据文件扩展名查询MIME类型的方法,在 mime package中,函数名称是 TypeByExtension ,文档 在这里 。传入扩展名(比如 .txt , .json ),返回MIME类型。不过,对于一些特别常见的MIME类型,比如HTML,JSON这些,直接在代码里写上字符串,要比每次用 mime 这个package查询MIME类型性能要好。

所以可以写这样几个辅助函数,直接用字符串设置常见的MIME类型(HTML, JSON和Form表单), 不常见的MIME类型可以通过内部查询 TypeByExtension 来完成。

import (     "net/http"     "mime" )  func SetHTMLContentType(w http.ResponseWriter) {     setContentType(w, "text/html") }  func SetJSONContentType(w http.ResponseWriter) {     setContentType(w, "application/json") }  func SetFormContentType(w http.ResponseWriter) {     setContentType(w, "x-www-form-urlencoded") }  func SetContentTypeFromExtension(w http.ResponseWriter, extension string) {     mime := mime.TypeByExtension(extension)     if mime != "" {         w.Header().Set("Content-Type", mime)     } }  func setContentType(w http.ResponseWriter, contentType string) {     w.Header().Set("Content-Type", contentType) } 

所以假设要把一个HTML按照纯文本的MIME类型下发,可以这样:

// resWriter变量是http.ResponseWriter类型 SetContentTypeFromExtension(resWriter, ".txt") fmt.Fprint(resWriter, "<html><body><h1>2</h1></body></html>") 

原文  https://www.mgenware.com/blog/?p=3064

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Golang 1.6: 使用mime.TypeByExtension来设置Content-Type

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址