0Pricing
Go Academy · 课时

响应辅助函数与状态码

c.JSON、c.AbortWithError 与错误响应

响应辅助函数与状态码 是 CoddyKit 上的免费 Go Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Go Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Go Academy 课程共包含 4 节课。

c.JSON

c.JSON(statusCode, obj) 会将 obj 序列化为 JSON,并将 Content-Type 设置为 application/json。这是最常用的响应方法。

c.JSON(http.StatusOK, gin.H{
    "id":   user.ID,
    "name": user.Name,
})

gin.H

gin.H 是 map[string]any 的简写。无需定义结构体即可使用它创建临时 JSON 对象。

c.JSON(200, gin.H{"message": "created", "id": id})

HTTP 状态常量

使用 http.Status* 常量代替原始数字,以提高可读性:

c.JSON(http.StatusCreated, gin.H{"id": id})
c.JSON(http.StatusBadRequest, gin.H{"error": "invalid input"})
c.JSON(http.StatusInternalServerError, gin.H{"error": "internal error"})

c.String 与 c.Data

使用 c.String 发送纯文本,或使用 c.Data 发送任意字节:

c.String(200, "Hello, %s!", name)
c.Data(200, "application/octet-stream", fileBytes)

c.File 与 c.FileAttachment

从磁盘提供文件——以内联方式展示或作为下载提供:

c.File("./public/report.pdf")           // inline
c.FileAttachment("./report.pdf", "report.pdf") // download

c.Redirect

发送 HTTP 重定向(301 永久重定向,302 临时重定向):

c.Redirect(http.StatusMovedPermanently, "/new-url")

c.AbortWithStatus

停止处理请求链,并使用给定的状态码写入空响应。与 c.JSON 不同,它会调用 Abort,防止后续处理程序运行。

c.AbortWithStatus(http.StatusUnauthorized)

c.Error

将错误附加到上下文,但不写入响应。中间件可以收集这些错误,并在最后写入统一的错误响应。

c.Error(fmt.Errorf("database error: %w", err))

响应标头

在调用 c.JSON 或 c.Data 之前设置自定义响应标头:

c.Header("X-Request-ID", requestID)
c.Header("Cache-Control", "max-age=3600")

渲染 XML

Gin 还支持 XML 和 YAML 响应:

c.XML(200, user) // requires xml struct tags
c.YAML(200, user)

自定义响应结构体

定义标准 API 响应包装器,使所有端点的结构保持一致:

type APIResponse struct {
    Success bool   `json:"success"`
    Data    any    `json:"data,omitempty"`
    Error   string `json:"error,omitempty"`
}

快速检查

c.AbortWithStatus 与 c.Status 的行为有何不同?

回顾:响应辅助方法

关键要点:

  • c.JSON(statusCode, obj) 是主要的 JSON 响应方法
  • 使用 http.Status* 常量以提高可读性
  • c.AbortWithStatus 会停止处理程序链
  • 为所有端点定义统一的 APIResponse 包装器

常见问题解答

「响应辅助函数与状态码」课时是免费的吗?

是的 — 「响应辅助函数与状态码」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Go Academy 课程的其余内容,请升级到 CoddyKit PRO。 Go Academy 课程共包含 4 节课。

「响应辅助函数与状态码」这节课中我会学到什么?

c.JSON、c.AbortWithError 与错误响应 你通过在浏览器中直接运行的动手代码来练习 Go Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Go Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Go Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「响应辅助函数与状态码」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Go Academy 课中编写并运行代码吗?

能。每节 Go Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. Gin 路由器与路由组
  2. 请求绑定与验证
  3. 响应辅助函数与状态码
  4. Gin 中间件:身份验证与日志记录
← 返回 Go Academy