Jak ustawić kod stanu HTTP w urządzeniu http.ResponseWriter
(np. Na 500 lub 403)?
Widzę, że żądania zwykle mają dołączony kod statusu 200.
Odpowiedzi:
Użyj http.ResponseWriter.WriteHeader
. Z dokumentacji:
WriteHeader wysyła nagłówek odpowiedzi HTTP z kodem stanu. Jeśli WriteHeader nie zostanie wywołany jawnie, pierwsze wywołanie Write wyzwoli niejawny WriteHeader (http.StatusOK). Dlatego jawne wywołania metody WriteHeader są używane głównie do wysyłania kodów błędów.
Przykład:
func ServeHTTP(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte("500 - Something bad happened!"))
}
Oprócz tego WriteHeader(int)
możesz skorzystać z metody pomocniczej http.Error , na przykład:
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)
}
Metody http.Error () i http.StatusText () są Twoimi przyjaciółmi
w.WriteHeader(http.StatusInternalServerError)
w.WriteHeader(http.StatusForbidden)
pełna lista tutaj
http: superfluous response.WriteHeader call