Как установить код состояния HTTP на http.ResponseWriter
(например, 500 или 403)?
Я вижу, что к запросам обычно прикреплен код состояния 200.
Ответы:
Используйте http.ResponseWriter.WriteHeader
. Из документации:
WriteHeader отправляет заголовок ответа HTTP с кодом состояния. Если WriteHeader не вызывается явно, первый вызов Write вызовет неявный 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