Эта функция обрабатывается в net / http / server.go :
func writeStatusLine(bw *bufio.Writer, is11 bool, code int, scratch []byte) {
if is11 {
bw.WriteString("HTTP/1.1 ")
} else {
bw.WriteString("HTTP/1.0 ")
}
if text, ok := statusText[code]; ok {
bw.Write(strconv.AppendInt(scratch[:0], int64(code), 10))
bw.WriteByte(' ')
bw.WriteString(text)
bw.WriteString("\r\n")
} else {
// don't worry about performance
fmt.Fprintf(bw, "%03d status code %d\r\n", code, code)
}
}
Из этого вы можете видеть, что описательный текст взят из внутреннего списка кодов состояния стандартной библиотеки., то же самое предоставляется функцией StatusText .
Если нет известного текста, используется заполнитель «код состояния», без возможности изменить это поведение.
То есть со стандартной библиотекой http
, нет способа сделать то, что вы хотите.Вы можете выбрать и / или повторно реализовать эту функцию в своем собственном пакете или (возможно, в долгосрочной перспективе) отправить запрос функции в восходящем направлении, чтобы изменить эту функцию.
Если эта функциональность действительно необходима дляпо какой-то причине, последний отчаянный подход может заключаться в написании какого-либо прокси-сервера, который перехватывает вывод HTTP и преобразует текст «кода состояния» для вас.Вы могли бы сделать это, написав свою собственную реализацию / оболочку net.Listener
, которую вы затем передаете http.Serve
.Это не будет очень эффективным и крайне не рекомендуется, если у вас нет абсолютно никакой другой возможности.