上一节学习了POST请求,Form、PostForm、MultipartForm、上传文件

本节学习:修改状态码、获取(修改)Header信息、设置302跳转、返回Json信息


首先写一个最简单的代码作为开始,后续进行修改。

执行结果

可以看到返回的状态码是200 OK,

(1)修改返回状态码

简单修改一下,实现修改状态码的功能

修改返回状态码

执行结果

注意:WriteHeader修改状态码的目的是为了发送错误类的HTTP状态码,比如301、404、500等

(2)获取Header信息

获取Header信息

Header包含由服务器接收或由客户端发送的请求报头字段。

例如:

Header = map[string][]string{

“Accept-Encoding”: {“gzip, deflate”},

“Accept-Language”: {“en-us”},

“Foo”: {“Bar”, “two”},

}

HTTP定义报头名称不区分大小写。

对于客户端请求,某些报头(如Content-Length和Connection)会在需要时自动写入,报头中的值可能会被忽略。

(3)设置302跳转

设置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",
})