设置状态码
Web 数据响应
Web 的响应与请求结构是类似的,响应分为三个部分:响应行、响应头部、响应体。
- 响应行:协议、响应状态码和状态描述,如: HTTP/1.1 200 OK
- 响应标头:包含各种头部字段信息,如 cookie,Content-Type 等头部信息。
- 响应体:携带客户端想要的数据,格式与编码由头部的 Content-Type 决定。
响应状态码的有固定取值和意义:
- 100~199:表示服务端成功接收客户端请求,要求客户端继续提交下一次请求才能完成整个处理过程。
- 200~299:表示服务端成功接收请求并已完成整个处理过程。最常用就是:200
- 300~399:为完成请求,客户端需进一步细化请求。比较常用的如:客户端请求的资源已经移动一个新地址使用
- 302 表示将资源重定向,客户端请求的资源未发生改变,
- 304 则是告诉客户端从本地缓存中获取。
- 400~499:客户端的请求有错误,如:404 表示你请求的资源在 web 服务器中找不到,403 表示服务器拒绝客户端的访问,一般是权限不够。
- 500~599:服务器端出现错误,最常用的是:500
404 标头
在 http 包中我们是通过与 http.ResponseWriter 交互来改变响应内容的,要添加的 HTTP 状态码的话,我们先访问 ResponseWriter 的文档 localhost:6060/pkg/net/http/#Respon... :
提示: 本地文档访问请运行命令 godoc -http=:6060 。
可以看到提供了 WriteHeader() 方法以及代码示例:
w.WriteHeader(http.StatusOK)
页面按快捷键 Ctrl+F 搜索关键词 StatusOK,即可定位到设置状态码的常量:
选中我们的 404 状态码,在代码中添加:
main.go
package main
import (
"fmt"
"net/http"
)
func handlerFunc(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "text/html; charset=utf-8")
if r.URL.Path == "/" {
fmt.Fprint(w, "<h1>Hello, 欢迎来到 goblog!</h1>")
} else if r.URL.Path == "/about" {
fmt.Fprint(w, "此博客是用以记录编程笔记,如您有反馈或建议,请联系 "+
"<a href=\"mailto:summer@example.com\">summer@example.com</a>")
} else {
w.WriteHeader(http.StatusNotFound)
fmt.Fprint(w, "<h1>请求页面未找到 :(</h1>"+
"<p>如有疑惑,请联系我们。</p>")
}
}
func main() {
http.HandleFunc("/", handlerFunc)
http.ListenAndServe(":3000", nil)
}
顺便访问一个不存在的页面:
如果你觉得我的文档能给你带来帮助,请不要吝啬你的赞哦~~