改进ghttp.Server自定义错误状态码设计

This commit is contained in:
John
2018-05-04 16:07:50 +08:00
parent 1d91ea492c
commit b449d56745
3 changed files with 11 additions and 8 deletions

View File

@ -136,6 +136,14 @@ func (r *Response) SetAllowCrossDomainRequest(allowOrigin string, allowMethods s
// 返回HTTP Code状态码
func (r *Response) WriteStatus(status int, content...string) {
if len(r.buffer) == 0 {
// 状态码注册回调函数处理
if status != http.StatusOK {
if f := r.request.Server.getStatusHandler(status, r.request); f != nil {
f(r.request)
r.WriteHeader(status)
return
}
}
r.Header().Set("Content-Type", "text/plain; charset=utf-8")
r.Header().Set("X-Content-Type-Options", "nosniff")
if len(content) > 0 {
@ -183,10 +191,11 @@ func (r *Response) ClearBuffer() {
// 输出缓冲区数据到客户端
func (r *Response) OutputBuffer() {
r.mu.Lock()
if len(r.buffer) > 0 {
r.mu.Lock()
r.ResponseWriter.Write(r.buffer)
r.buffer = make([]byte, 0)
r.mu.Unlock()
}
r.mu.Unlock()
}

View File

@ -59,11 +59,6 @@ func (s *Server)handleRequest(w http.ResponseWriter, r *http.Request) {
// 事件 - AfterServe
s.callHookHandler(request, "AfterServe")
// 状态码注册回调函数处理
if f := request.Server.getStatusHandler(request.Response.Status, request); f != nil {
f(request)
}
// 设置请求完成时间
request.LeaveTime = gtime.Microsecond()

View File

@ -12,7 +12,6 @@ func main() {
r.Response.WriteStatus(404)
})
s.BindStatusHandler(404, func(r *ghttp.Request){
r.Response.ClearBuffer()
r.Response.Writeln("This is customized 404 page")
})
s.SetPort(8199)