Из чтения источника я не вижу никакого способа изменить код состояния (кроме сбоя метода, что означает, что вы не получите свою страницу с ошибкой). Я думаю, подразумевается, что если файлы обслуживаются, то это был 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)
или что-то еще, если это ваше предпочтение. Какие бы лучшие апартаменты вам ни понадобились. Мой опыт связан с подготовкой объекта ответа в области действия, отличной от области действия мультиплексора, поэтому я думаю, что предпочитаю приведенный выше бит (это имеет больше смысла, чем когда вспомогательные методы возвращают неструктурированные данные, которые вы затем записываете в средство записи ответов).
person
evanmcdonnal
schedule
03.12.2015