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时,会触发下载:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值