我正在使用Golang编写Web应用程序,我使用的是beego框架。似乎框架具有为golang web服务器返回的内部状态代码。
我想知道golang或beego中是否有任何方法,或其他工具可以让我控制返回浏览器的状态代码,例如200或500或其他数字。
答案 0 :(得分:5)
在您的控制器中,您可以通过http.ResponseWriter
Ctx
type SomeController struct {
beego.Controller
}
func (c *SomeController) Get() {
c.Ctx.ResponseWriter.WriteHeader(500)
}
编辑:进一步检查后,你应该这样做:
func (c *SomeController) Get() {
c.CustomAbort(500, "Internal server error")
}
我将离开关于上下文的引用,因为您可以在控制器的http.Request
属性上找到http.ResponseWriter
和Ctx
。
答案 1 :(得分:1)
查看http.ResponseWriter.WriteHeader
。如果您有权访问ResponseWriter
- 对象,则可以轻松返回自己的HTTP status code。
答案 2 :(得分:1)
c.Abort("500")
它的响应HTTP代码是200。
必须:
c.Ctx.ResponseWriter.WriteHeader(500)
答案 3 :(得分:0)
聚会很晚了。我可以在 beego v2.0.2 上设置状态。
func (u *UserController) Post() {
var user models.User
json.Unmarshal(u.Ctx.Input.RequestBody, &user)
uid, _ := models.AddUser(&user)
u.Data["json"] = map[string]interface{}{"uid": uid}
u.Ctx.Output.Status = http.StatusCreated #<<<------------
u.ServeJSON()
}