-2

我正在使用 Golang 编写 Web 应用程序,并且我使用 beego 框架。该框架似乎为 golang Web 服务器返回了内部状态代码。

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

4

4 回答 4

6

在您的控制器中,您可以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.Requestand 。http.ResponseWriterCtx

于 2014-09-25T23:42:48.100 回答
1

看看http.ResponseWriter.WriteHeader。如果您有权访问ResponseWriter-object,则可以轻松返回您自己的HTTP 状态代码

于 2014-09-25T12:42:46.900 回答
1
c.Abort("500")

它响应 HTTP 代码是 200。

一定是:

c.Ctx.ResponseWriter.WriteHeader(500)    
于 2016-04-20T10:01:55.163 回答
-1

聚会很晚。我可以在 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()
}
于 2021-04-02T09:11:53.320 回答