上一节学习了POST请求,Form、PostForm、MultipartForm、上传文件
本节学习:修改状态码、获取(修改)Header信息、设置302跳转、返回Json信息
首先写一个最简单的代码作为开始,后续进行修改。
可以看到返回的状态码是200 OK,
(1)修改返回状态码
简单修改一下,实现修改状态码的功能
注意:WriteHeader修改状态码的目的是为了发送错误类的HTTP状态码,比如301、404、500等
(2)获取Header信息
Header包含由服务器接收或由客户端发送的请求报头字段。
例如:
Header = map[string][]string{
“Accept-Encoding”: {“gzip, deflate”},
“Accept-Language”: {“en-us”},
“Foo”: {“Bar”, “two”},
}
HTTP定义报头名称不区分大小写。
对于客户端请求,某些报头(如Content-Length和Connection)会在需要时自动写入,报头中的值可能会被忽略。
(3)设置302跳转
代码解析
func ResponseWriter2(w http.ResponseWriter, r *http.Request) {
//w.Header().Set的功能是自定义设置header信息,
//1个key对应1个value,键不区分大小写
w.Header().Set("Location","#34;)
//WriteHeader发送一个带有提供的状态码的HTTP响应头,如果未设置,将默认WriteHeader(http.StatusOK),除非自定义设置状态码。
//状态码必须是有效的HTTP 1xx-5xx状态码。
w.WriteHeader(302)
}
(4)设置JSON返回
代码解析:
func ResponseWriter3(w http.ResponseWriter, r *http.Request) {
//w.Header().Set的功能是自定义设置header信息,
//设置Content-Type的值为application/json
w.Header().Set("Content-Type", "application/json")
//1. 设置map,键的类型是string,值的类型是string
//2. json.Marshal将map转换成json的[]byte类型
bytes, _ := json.Marshal(map[string]string{
"username": "GoPy",
"password": "123456",
})