返回体
func writeExample(w http.ResponseWriter, request *http.Request) {
// 没有手动设置响应类型,会通过检测响应的前 512 个字节自动判断响应类型
// 这里是 Content-Type: text/html; charset=utf-8
str:= `<html>
<head><title>Go Web Programming</title></head>
<body><hl>Hello World</hl></body>
</html>`
w.Write([]byte(str))
}
设置状态码
func writeHeaderExample(w http.ResponseWriter, request *http.Request) {
// 设置HTTP 状态码, WriteHeader 方法名有误导,只能设置状态码,而不是其他响应首部,
// 默认是200
// 调用 WriteHeader 之后不能在对响应首部做任何操作。但是可以继续写入响应体
w.WriteHeader(500)
// 在 WriteHeader 之后对首部的设置无效
//w.Header().Set("Content-Type","json")
fmt.Fprintln(w,"服务异常")
}
设置重定向
func headerExample(w http.ResponseWriter, request *http.Request) {
// Header 设置响应首部
w.Header().Set("Location","http://www.baidu.com")
w.WriteHeader(302)
}
返回JSON
func jsonExample(w http.ResponseWriter, request *http.Request) {
// Header 设置响应首部
w.Header().Set("Content-Type","application/json")
post := &Post{
User: "He Dong",
Thread: []string{"First","Second","Three"},
}
json, _ := json.Marshal(post)
w.Write(json)
}
完整代码
package main
import (
json "encoding/json"
"fmt"
"net/http"
)
type Post struct {
User string
Thread []string
}
// 通过编写响应首部重定向
func main(){
server := http.Server{
Addr: "127.0.0.1:8080",
}
http.HandleFunc("/write",writeExample)
http.HandleFunc("/writeHeader",writeHeaderExample)
http.HandleFunc("/redirect",headerExample)
http.HandleFunc("/jsonExample",jsonExample)
server.ListenAndServe()
}
func writeExample(w http.ResponseWriter, request *http.Request) {
// 没有手动设置响应类型,会通过检测响应的前 512 个字节自动判断响应类型
// 这里是 Content-Type: text/html; charset=utf-8
str:= `<html>
<head><title>Go Web Programming</title></head>
<body><hl>Hello World</hl></body>
</html>`
w.Write([]byte(str))
}
func writeHeaderExample(w http.ResponseWriter, request *http.Request) {
// 设置HTTP 状态码, WriteHeader 方法名有误导,只能设置状态码,而不是其他响应首部,
// 默认是200
// 调用 WriteHeader 之后不能在对响应首部做任何操作。但是可以继续写入响应体
w.WriteHeader(500)
// 在 WriteHeader 之后对首部的设置无效
//w.Header().Set("Content-Type","json")
fmt.Fprintln(w,"服务异常")
}
func headerExample(w http.ResponseWriter, request *http.Request) {
// Header 设置响应首部
w.Header().Set("Location","http://www.baidu.com")
w.WriteHeader(302)
}
// 返回json
func jsonExample(w http.ResponseWriter, request *http.Request) {
// Header 设置响应首部
w.Header().Set("Content-Type","application/json")
post := &Post{
User: "He Dong",
Thread: []string{"First","Second","Three"},
}
json, _ := json.Marshal(post)
w.Write(json)
}