Go语言中http.ResponseWriter接口
在 Go 语言中,客户端请求信息都封装到了 Request 对象,并通过 ResponseWriter 将响应发送回客户端:
package main import ( "fmt" "net/http" ) func myHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "hello world") } func main() { http.HandleFunc("/go", myHandler) http.ListenAndServe("127.0.0.1:8000", nil) }
ResponseWriter 源码结构如下:
type ResponseWriter interface { // 用于设置/获取所有响应头信息 Header() Header // 用于写入数据到响应实体 Write([]byte) (int, error) // 用于设置响应状态码 WriteHeader(statusCode int) }
包含三个方法:
- WriteHeader:主要作用是在 API 接口中返回错误码,支持传入一个整型数据用来表示响应状态码,如果不调用该方法的话,默认响应状态码是 200 OK。
- Header:用于设置响应头信息,可以通过
w.Header().Set
方法设置响应头;通过w.Header().Add
方法新增响应头 - Write:用于写入数据到 HTTP 响应实体,如果调用 Write 方法时还不知道 Content-Type,会通过数据的前 512 个字节进行判断。
例如:w.Header().Set("Content-Type", "application/octet-stream")
content-type
指示响应内容的格式,如果这个类型浏览器能够支持阅览并且没有设置content-disposition情况浏览器就会直接展示该资源,比如png、jpeg、video等格式,如果浏览器不支持就会,默认触发下载。常见如下格式:
content-disposition
包含响应数据的描述信息,以及下载或者在线查看的处理方式。
application/octet-stream
在某些下载文件的场景中,服务端可能会返回文件流,并在返回头中带上Content-Type: application/octet-stream,告知浏览器这是一个字节流,浏览器处理字节流的默认方式就是下载。
例如:当我们在浏览器输入http://localhost:9999/_geecache/scores/Tom时,会触发下载:
到此这篇关于Go语言中http.ResponseWriter接口的文章就介绍到这了,更多相关Go http.ResponseWriter接口内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
- 解析Go 标准库 http.FileServer 实现静态文件服务
- golang复用http.request.body的方法示例
- 解决golang http.FileServer 遇到的坑
- 在Golang中使用http.FileServer返回静态文件的操作
- 在go文件服务器加入http.StripPrefix的用途介绍
- Golang中的http.Server源码深入分析
- Go http.Transport 主要参数说明
- Go 语言中的 http.FileSystem详细解析
- Golang语言如何读取http.Request中body的内容
- golang如何用http.NewRequest创建get和post请求
相关文章
GoLang中的互斥锁Mutex和读写锁RWMutex使用教程
RWMutex是一个读/写互斥锁,在某一时刻只能由任意数量的reader持有或者一个writer持有。也就是说,要么放行任意数量的reader,多个reader可以并行读;要么放行一个writer,多个writer需要串行写2023-01-01golang中channel+error来做异步错误处理有多香
官方推荐golang中错误处理当做值处理, 既然是值那就可以在channel中传输,这篇文章主要介绍了golang 错误处理channel+error真的香,需要的朋友可以参考下2023-01-01
最新评论