1
0
mirror of https://github.com/labstack/echo.git synced 2026-05-16 09:48:24 +02:00

Context.Json should not unwrap response and just wrap Response so other middlewares can use their own "wrapping" Responses and see the status code. (#2964)

This commit is contained in:
Martti T.
2026-05-01 21:32:33 +03:00
committed by GitHub
parent 96be504860
commit f16f84decc
-4
View File
@@ -479,13 +479,9 @@ func (c *Context) json(code int, i any, indent string) error {
// as JSONSerializer.Serialize can fail, and in that case we need to delay sending status code to the client until // as JSONSerializer.Serialize can fail, and in that case we need to delay sending status code to the client until
// (global) error handler decides correct status code for the error to be sent to the client. // (global) error handler decides correct status code for the error to be sent to the client.
// For that we need to use writer that can store the proposed status code until the first Write is called. // For that we need to use writer that can store the proposed status code until the first Write is called.
if r, err := UnwrapResponse(c.response); err == nil {
r.Status = code
} else {
resp := c.Response() resp := c.Response()
c.SetResponse(&delayedStatusWriter{ResponseWriter: resp, status: code}) c.SetResponse(&delayedStatusWriter{ResponseWriter: resp, status: code})
defer c.SetResponse(resp) defer c.SetResponse(resp)
}
return c.echo.JSONSerializer.Serialize(c, i, indent) return c.echo.JSONSerializer.Serialize(c, i, indent)
} }