Из-за чтения источника я не вижу способа изменить код состояния (кроме метода, который не позволяет получить сообщение об ошибке). Я думаю, что подразумевается, что если файлы обслуживаются, то это был HTTP 200
, который не совсем необоснован.
Я рекомендую прочитать файл страницы ошибки в строке, используя этот метод; https://golang.org/pkg/net/http/#Error
РЕДАКТИРОВАТЬ: Это может быть на самом деле недостаточно для вас. Он хочет, чтобы сообщение об ошибке было простым текстом, поэтому я предположил, что это неправильное использование. В этом случае у вас нет полезных абстракций, чтобы делать то, что вы хотите.
В ответ на комментарий мои личные предпочтения были бы чем-то большим по линии;
func main() {
mux := http.NewServeMux()
mux.HandleFunc("/sendstrailers", func(w http.ResponseWriter, req *http.Request) {
resp := &http.Response{
StatusCode: 404,
}
resp.Write(w)
})
}
но вы также можете просто использовать w.WriteHeader(http.StatusForbidden)
или независимо от того, если это ваши предпочтения. Какие бы ни были лучшие апартаменты. Мой опыт заключался бы в том, чтобы подготовить объект ответа в области, отличной от области действия мультиплексора, поэтому по этой причине я считаю, что я предпочитаю бит выше (имеет смысл, чем хелпер-методы возвращают неструктурированные данные, которые вы затем записываете в ответственный автоответчик).
Итак, вы сами рекомендуем использовать 'WriteHeader' и' io.WriteString'? – Charles
@Charles, что было бы в одну сторону. Другой вариант - создать экземпляр 'http.Response', чем затем' resp.Write (w) ', и он напишет ответ в' ResponseWriter'. То есть вы можете явно указать любые значения, которые вы хотите, что больше того, о чем я думал. – evanmcdonnal