我正在使用 Golang 编写 Web 应用程序,并且我使用 beego 框架。该框架似乎为 golang Web 服务器返回了内部状态代码。
我想知道golang或beego中是否有任何方法可以让我控制返回到浏览器的状态码,比如200、500或其他数字。
在您的控制器中,您可以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
and 。http.ResponseWriter
Ctx
看看http.ResponseWriter.WriteHeader
。如果您有权访问ResponseWriter
-object,则可以轻松返回您自己的HTTP 状态代码。
c.Abort("500")
它响应 HTTP 代码是 200。
一定是:
c.Ctx.ResponseWriter.WriteHeader(500)
聚会很晚。我可以在 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()
}