[英]If a panic occurs within the http.HandlerFunc function, it will not be sent to the client http status code
如果在http.HandlerFunc函數內發生緊急情況,則不會將其發送到客戶端http狀態代碼。 為什么會這樣,如何避免呢? 因為javascript XMLHttpRequest在未收到http狀態代碼時不能很好地工作。
在http響應沒有狀態且沒有正文內容的情況下,我們如何編寫ajax請求?
func main() {
var counter int
http.HandleFunc("/hello", func(writer http.ResponseWriter, request *http.Request) {
if counter%2 == 0 {
counter++
writer.Write([]byte(time.Now().String()))
} else {
counter++
panic(":(")
}
})
err := http.ListenAndServe(":9999", nil)
if err != nil {
panic(err)
}
}
在這種情況下,您不應該驚慌。 恐慌將導致運行您的處理程序函數的當前go例程退出,而不會在響應中寫入任何您不想要的內容,而是使用WriteHeader
方法返回錯誤代碼:
func main() {
var counter int
http.HandleFunc("/hello", func(writer http.ResponseWriter, request *http.Request) {
if counter%2 == 0 {
counter++
writer.Write([]byte(time.Now().String()))
} else {
counter++
writer.WriteHeader(http.StatusInternalServerError)
}
})
err := http.ListenAndServe(":9999", nil)
if err != nil {
panic(err)
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.