mirror of
https://gitee.com/johng/gf
synced 2026-06-30 19:17:30 +08:00
改进ghttp.Server自定义错误状态码设计
This commit is contained in:
@ -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()
|
||||
|
||||
}
|
||||
|
||||
@ -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()
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
Reference in New Issue
Block a user