Golang beego框架设置状态代码

时间:2014-09-25 10:12:10

标签: web go beego

我正在使用Golang编写Web应用程序,我使用的是beego框架。似乎框架具有为golang web服务器返回的内部状态代码。

我想知道golang或beego中是否有任何方法,或其他工具可以让我控制返回浏览器的状态代码,例如200或500或其他数字。

4 个答案:

答案 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.ResponseWriterCtx

答案 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()
}