我正在try 开发一个使用围棋的API网关.我希望如果请求在查询中包含"_alway s200=true",我会将状态代码设置为200. 以下是我try 过的: custom_response_writer.go:
type CustomResponseWriter struct {
http.ResponseWriter
Buf *bytes.Buffer
StatusCode int
WroteHeader bool
}
func NewCustomResponseWriter(w http.ResponseWriter) *CustomResponseWriter {
return &CustomResponseWriter{ResponseWriter: w, Buf: new(bytes.Buffer)}
}
func (c *CustomResponseWriter) WriteHeader(code int) {
c.StatusCode = code
c.ResponseWriter.WriteHeader(code)
}
func (c *CustomResponseWriter) Write(b []byte) (int, error) {
return c.Buf.Write(b)
}
middleware:个
func HeaderFilterMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
always200, _ := r.Context().Value(always200QueryKey).(bool)
crw := NewCustomResponseWriter(w)
next.ServeHTTP(crw, r)
if always200 {
crw.WriteHeader(http.StatusOK)
}
})
}
它总是返回404.有什么办法可以解决这个问题吗?