GoravelGoravel
首页
视频
  • English
  • 简体中文
GitHub
首页
视频
  • English
  • 简体中文
GitHub
  • 前言

    • 升级指南

      • 从 v1.14 升级到 v1.15
      • 从 v1.13 升级到 v1.14
      • 历史版本升级
    • 贡献指南
    • 优秀扩展包
  • 入门指南

    • 安装
    • 配置信息
    • 文件夹结构
    • 编译
  • 核心架构

    • 请求周期
    • 服务容器
    • 服务提供者
    • Facades
  • 基本功能

    • 路由
    • HTTP 中间件
    • 控制器
    • 请求
    • 响应
    • 视图
    • Grpc
    • Session
    • 表单验证
    • 日志
  • 综合话题

    • Artisan 命令行
    • 缓存系统
    • 事件系统
    • 文件储存
    • 邮件
    • 队列
    • 任务调度
    • 本地化
    • 扩展包开发
    • 颜色
    • Strings
    • 辅助函数
  • 安全相关

    • 用户验证
    • 用户授权
    • 加密解密
    • 哈希
  • ORM

    • 快速入门
    • 模型关联
    • 数据库迁移
    • 数据填充
    • 模型工厂
  • 测试相关

    • 快速入门
    • HTTP Tests
    • Mock

响应

  • 简介
  • 字符串
  • JSON
  • 自定义返回
  • 文件响应
  • 下载文件
  • 附加 Header
  • Cookie
    • 设置 Cookie
    • 过期 Cookie
  • 返回成功
  • 自定义 Code
  • 返回 Stream
  • 重定向
  • 空响应
  • 获取响应

简介

可以使用 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")

Cookie

设置 Cookie

使用 response 实例中的 Cookie 方法设置 cookie。Cookie 方法接受一个 http.Cookie 实例,允许您设置各种 cookie 选项。

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


ctx.Response().Cookie(http.Cookie{
  Name: "name",
  Value: "Goravel",
  Path: "/",
  Domain: "goravel.dev",
  Expires: time.Now().Add(24 * time.Hour),
  Secure: true,
  HttpOnly: true,
})

过期 Cookie

使用 WithoutCookie 方法删除 cookie。

ctx.Response().WithoutCookie("name")

返回成功

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",
})

返回 Stream

ctx.Response().Stream(http.StatusCreated, func(w http.StreamWriter) error {
  data := []string{"a", "b", "c"}
  for _, item := range data {
    if _, err := w.Write([]byte(item + "\n")); err != nil {
      return err
    }

    if err := w.Flush(); err != nil {
      return err
    }

    time.Sleep(1 * time.Second)
  }

  return nil
})

重定向

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

空响应

ctx.Response().NoContent()
ctx.Response().NoContent(http.StatusOk)

获取响应

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

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

origin 包含以下方法:

方法名作用
Body获取响应数据
Header获取响应 header
Size获取响应大小
Status获取响应状态码
Edit this page
Prev
请求
Next
视图