定义统一响应结构体Response包含Success、Message、Data和Code字段;2. 封装Error和Success函数用于返回标准化的错误和成功响应;3. 使用RecoverMiddleware中间件捕获panic并返回统一错误格式;4. 在Handler中通过Error函数返回各类业务错误,确保前后端交互一致性。

在Golang Web开发中,统一错误返回格式有助于前端更好地处理响应,提升接口的规范性和可维护性。下面是一个常见的统一错误返回示例,基于标准HTTP状态码和自定义业务错误码设计。
定义一个通用的API响应结构体,包含成功标志、消息、数据和错误码:
type Response struct {
Success bool `json:"success"`
Message string `json:"message"`
Data interface{} `json:"data,omitempty"`
Code int `json:"code"`
}
Success 表示请求是否成功,Message 返回提示信息,Data 返回具体数据(成功时填充),Code 是业务或HTTP状态码。
封装几个常用的返回方法,便于在Handler中调用:
立即学习“go语言免费学习笔记(深入)”;
func JSON(w http.ResponseWriter, statusCode int, data interface{}) {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(statusCode)
json.NewEncoder(w).Encode(data)
}
func Error(w http.ResponseWriter, message string, code int) {
resp := Response{
Success: false,
Message: message,
Code: code,
}
JSON(w, code, resp)
}
func Success(w http.ResponseWriter, data interface{}, message string) {
resp := Response{
Success: true,
Message: message,
Data: data,
Code: http.StatusOK,
}
JSON(w, http.StatusOK, resp)
}
通过 Error 函数可以统一返回错误,避免散落在各处的错误处理逻辑。
使用中间件捕获未处理的panic,并返回统一错误格式:
func RecoverMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
defer func() {
if err := recover(); err != nil {
log.Printf("Panic: %v", err)
Error(w, "Internal server error", http.StatusInternalServerError)
}
}()
next.ServeHTTP(w, r)
})
}
将此中间件注册到路由中,可防止服务因panic而中断,并保证错误格式一致。
实际业务处理中,可以这样返回错误:
func GetUserHandler(w http.ResponseWriter, r *http.Request) {
// 模拟错误
if r.URL.Query().Get("id") == "" {
Error(w, "User ID is required", http.StatusBadRequest)
return
}
// 模拟查不到用户
user := getUserFromDB("123")
if user == nil {
Error(w, "User not found", http.StatusNotFound)
return
}
Success(w, user, "User retrieved successfully")
}
这样无论成功还是失败,前端收到的JSON结构都是一致的,便于统一处理。
基本上就这些。通过结构体+封装函数+中间件的方式,能有效实现Golang Web项目中的错误统一返回,提高代码整洁度和前后端协作效率。
以上就是GolangWeb开发中错误统一返回示例的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号