代码拉取完成,页面将自动刷新
package toolgin
import (
"bytes"
"github.com/gin-gonic/gin"
)
// Gin 框架在中间件中获取 response body 的方法
// https://www.toutiao.com/article/7182178685490004484/?wid=1684317766913
// ResponseWriter 自定义一个结构体,实现 gin.ResponseWriter interface
// 用于获取响应body,重写响应body。获取响应code,重写响应code
type ResponseWriter struct {
gin.ResponseWriter
body *bytes.Buffer
code int
}
// 重写 Write([]byte) (int, error) 方法
func (w *ResponseWriter) Write(b []byte) (int, error) {
return w.body.Write(b) //向一个bytes.buffer中写一份数据来为获取body使用
}
// WriteHeader 重写 WriteHeader(statusCode int) 方法
func (w *ResponseWriter) WriteHeader(statusCode int) {
w.code = statusCode //向一个code中写一份数据来为获取code使用
}
// GetBody 获取body
func (w *ResponseWriter) GetBody() *bytes.Buffer {
return w.body
}
// GetCode 获取code
func (w *ResponseWriter) GetCode() int {
return w.code
}
// CleanBody 清空body,可用与重写body
func (w *ResponseWriter) CleanBody() {
w.body = bytes.NewBuffer([]byte{})
}
// NewResponseWriter 包装 gin.ResponseWriter 接口
func NewResponseWriter(c *gin.Context) *ResponseWriter {
writer := ResponseWriter{
ResponseWriter: c.Writer,
body: bytes.NewBuffer([]byte{}),
code: 0,
}
c.Writer = &writer
return &writer
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。