在现代 Web 应用中,JSON 已成为前后端通信的主流数据格式。Go 语言标准库内置对 JSON 的良好支持,只需少量代码就能返回结构化的 JSON 响应。
本篇案例将手把手带你完成一个「返回 JSON 数据的 HTTP 接口」,帮助你理解如何用 Go 语言实现后端服务最基础的功能。
一、目标说明
构建一个 HTTP 服务:
- • 请求地址:
/hello
- • 请求方式:
GET
- • 返回内容:
{"message": "Hello, Go!","status": 200 }
二、核心知识点
- •
net/http
:Go 标准 HTTP 库 - •
encoding/json
:JSON 编解码包 - •
http.ResponseWriter
:响应写入器 - •
http.HandleFunc
:注册处理函数
三、完整代码示例
package mainimport ("encoding/json""net/http"
)type Response struct {Message string `json:"message"`Status int `json:"status"`
}func helloHandler(w http.ResponseWriter, r *http.Request) {// 设置返回头信息w.Header().Set("Content-Type", "application/json")w.WriteHeader(http.StatusOK)// 创建响应结构体resp := Response{Message: "Hello, Go!",Status: 200,}// 编码为 JSON 并写入响应json.NewEncoder(w).Encode(resp)
}func main() {http.HandleFunc("/hello", helloHandler)http.ListenAndServe(":8080", nil)
}
四、运行与测试
1. 运行服务
go run main.go
访问浏览器或使用 curl
:
curl http://localhost:8080/hello
2. 响应结果
{"message": "Hello, Go!","status": 200
}
五、快速问答(FAQ)
✅ 为什么要设置 Content-Type: application/json
?
告诉浏览器或客户端,我们返回的是 JSON 格式数据。
✅ json.NewEncoder(w).Encode(...)
做了什么?
它将结构体编码为 JSON 并直接写入到 ResponseWriter
输出流。
✅ 如果编码失败会发生什么?
Encode()
会返回 error,可以用 if err != nil
判断并手动写入 500 错误。
六、延伸练习
- 1. 返回一个包含用户列表的 JSON 数组;
- 2. 增加 POST 方法处理 JSON 请求体;
- 3. 返回当前时间戳;
- 4. 返回分页数据结构。
七、总结
本案例实现了一个 Go 最小可用的 JSON 接口:
✅ 使用标准库,无需第三方框架
✅ 面向新手,极易上手
✅ 为构建 RESTful API 打下基础