beego write header 坑
Posted 柳清风09
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了beego write header 坑相关的知识,希望对你有一定的参考价值。
一个普通公共方法,主要是处理json个数数据返回。
// Response return response
func (c *BaseController) Response(code int, data interface)
c.Ctx.ResponseWriter.WriteHeader(code)
c.Data["json"] = data
c.ServeJSON()
ServeJSON里面调用JSON方法,如下
func (output *BeegoOutput) JSON(data interface, hasIndent bool, encoding bool) error
output.Header("Content-Type", "application/json; charset=utf-8")
第一行就是输出json的头
但通过curl调用时候,却发现返回的头里面Content-Type
Content-Type: text/plain; charset=utf-8
神奇的世界
仔细研究研究WriteHeader方法
func (r *Response) WriteHeader(code int)
if r.Status > 0
//prevent multiple response.WriteHeader calls
return
r.Status = code
r.Started = true
r.ResponseWriter.WriteHeader(code)
发现了,它会校验当前返回码是否大于0,如果大于0表示这个状态码已经被设置,后续不允许再次设置。
所以后续的header的设置都是直接retrun。导致无法设置成功。
解决的办法就直接赋值code状态码
unc (c *BaseController) Response(code int, data interface)
c.Ctx.Output.Status = code
c.Data["json"] = data
c.ServeJSON()
以上是关于beego write header 坑的主要内容,如果未能解决你的问题,请参考以下文章
从头用脚分析FFmpeg源码 - avformat_write_header
从content-type设置看Spring MVC处理header的一个坑
踩坑记录SQLException: Error writing file ‘C:WindowsTEMPMY8C3D.tmp‘ (Errcode: 28)
踩坑记录SQLException: Error writing file ‘C:WindowsTEMPMY8C3D.tmp‘ (Errcode: 28)