有没有办法在Go中使用自定义状态代码通过HTTP提供静态文件(不重写大量私有代码)?
从我所看到的:
http.StatusOK
标头here。我想我已经知道了答案,但如果有人有替代解决方案,那就很有用。
该用例正在服务500.html,404.html等。 al文件。我通常使用nginx来捕获Go的普通普通http.Error
响应,并让nginx在磁盘上提供文件,但是我在一个不能选择的环境中。
答案 0 :(得分:7)
换行http.ResponseWriter
:
type MyResponseWriter struct {
http.ResponseWriter
code int
}
func (m MyResponseWriter) WriteHeader(int) {
m.ResponseWriter.WriteHeader(m.code)
}
然后(对于HTTP 500):
http.ServeFile(MyResponseWriter{rw, 500}, rq, "file.name")
rw
是"实际" http.ResponseWriter
和rq
是*http.Request
对象。