在現代 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 打下基礎