响应

简介

可以使用 ctx.Response() 在控制其中进行 HTTP 响应。

字符串

import "github.com/goravel/framework/contracts/http"

ctx.Response().String(http.StatusOK, "Hello Goravel")

JSON

import (
  "github.com/goravel/framework/contracts/http"
)

ctx.Response().Json(http.StatusOK, http.Json{
  "Hello": "Goravel",
})

ctx.Response().Json(http.StatusOK, struct {
  ID       uint `json:"id"`
  Name     string `json:"name"`
}{
  Id:      1,
  Front:   "Goravel",
})

自定义返回

ctx.Response().Data(http.StatusOK, "text/html; charset=utf-8", []byte("<b>Goravel</b>"))

文件响应

import "net/http"

ctx.Response().File("./public/logo.png")

下载文件

import "net/http"

ctx.Response().Download("./public/logo.png", "1.png")

附加 Header

import "github.com/goravel/framework/contracts/http"

ctx.Response().Header("Content", "Goravel").String(http.StatusOK, "Hello Goravel")

返回成功

ctx.Response().Success().String("Hello Goravel")
ctx.Response().Success().Json(http.Json({
  "Hello": "Goravel",
}))

自定义 Code

ctx.Response().Status(http.StatusOK).Json(http.Json{
  "hello": "Goravel",
})

重定向

ctx.Response().Redirect(http.StatusMovedPermanently, "https://goravel.dev")

获取响应

可以获取响应的各种信息,一般用在 HTTP 中间件中:

origin := ctx.Response().Origin()

origin 包含一下方法:

方法名作用
Body获取响应数据
Header获取响应 header
Size获取响应大小
Status获取响应状态码