ฉันจะตั้งรหัสสถานะ HTTP บนhttp.ResponseWriter
(เช่น 500 หรือ 403) ได้อย่างไร
ฉันเห็นว่าโดยปกติแล้วคำขอจะมีรหัสสถานะ 200 แนบอยู่
ฉันจะตั้งรหัสสถานะ HTTP บนhttp.ResponseWriter
(เช่น 500 หรือ 403) ได้อย่างไร
ฉันเห็นว่าโดยปกติแล้วคำขอจะมีรหัสสถานะ 200 แนบอยู่
คำตอบ:
ใช้http.ResponseWriter.WriteHeader
. จากเอกสารประกอบ:
WriteHeader ส่งส่วนหัวการตอบกลับ HTTP พร้อมรหัสสถานะ หากไม่ได้เรียก WriteHeader อย่างชัดเจนการเรียกเขียนครั้งแรกจะเรียกใช้ WriteHeader โดยปริยาย (http.StatusOK) ดังนั้นการโทรไปยัง WriteHeader อย่างชัดเจนส่วนใหญ่จะใช้ในการส่งรหัสข้อผิดพลาด
ตัวอย่าง:
func ServeHTTP(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte("500 - Something bad happened!"))
}
นอกเหนือจากWriteHeader(int)
คุณสามารถใช้วิธีการช่วยเหลือhttp.Errorตัวอย่างเช่น:
func yourFuncHandler(w http.ResponseWriter, r *http.Request) {
http.Error(w, "my own error message", http.StatusForbidden)
// or using the default message error
http.Error(w, http.StatusText(http.StatusNotFound), http.StatusNotFound)
}
http.Error () และhttp.StatusText ()เป็นเพื่อนของคุณ
w.WriteHeader(http.StatusInternalServerError)
w.WriteHeader(http.StatusForbidden)
รายการทั้งหมดที่นี่
http: superfluous response.WriteHeader call