98 lines
1.9 KiB
Go
98 lines
1.9 KiB
Go
package response
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// API响应结构
|
|
type Response struct {
|
|
Code string `json:"code"`
|
|
Message string `json:"message"`
|
|
Data interface{} `json:"data"`
|
|
}
|
|
|
|
// ErrorCodeMap 错误码映射
|
|
var ErrorCodeMap map[string]string
|
|
|
|
// 加载错误码
|
|
func init() {
|
|
ErrorCodeMap = map[string]string{
|
|
"apiOK": "API正常",
|
|
"-1": "内部错误",
|
|
"-2": "参数错误",
|
|
"-3": "用户未登录",
|
|
"-4": "用户已存在",
|
|
"-5": "用户不存在",
|
|
"-6": "密码错误",
|
|
"-7": "权限不足",
|
|
"-8": "请求频率过高",
|
|
"-9": "文件上传失败",
|
|
"-10": "文件类型不支持",
|
|
"-11": "文件大小超过限制",
|
|
"-42": "用户名或密码错误",
|
|
}
|
|
}
|
|
|
|
// Success 成功响应
|
|
func Success(ctx *gin.Context, data interface{}) {
|
|
ctx.JSON(http.StatusOK, Response{
|
|
Code: "0",
|
|
Message: "Success",
|
|
Data: data,
|
|
})
|
|
}
|
|
|
|
// Error 错误响应
|
|
func Error(ctx *gin.Context, code string, data interface{}) {
|
|
message := ErrorCodeMap[code]
|
|
if message == "" {
|
|
message = "Unknown error"
|
|
}
|
|
|
|
ctx.JSON(http.StatusOK, Response{
|
|
Code: code,
|
|
Message: message,
|
|
Data: data,
|
|
})
|
|
}
|
|
|
|
// BadRequest 参数错误
|
|
func BadRequest(ctx *gin.Context, message string) {
|
|
if message == "" {
|
|
message = "Bad request"
|
|
}
|
|
ctx.JSON(http.StatusBadRequest, Response{
|
|
Code: "-2",
|
|
Message: message,
|
|
Data: nil,
|
|
})
|
|
}
|
|
|
|
// Unauthorized 未授权
|
|
func Unauthorized(ctx *gin.Context) {
|
|
ctx.JSON(http.StatusUnauthorized, Response{
|
|
Code: "-3",
|
|
Message: "Unauthorized",
|
|
Data: nil,
|
|
})
|
|
}
|
|
|
|
// Forbidden 禁止访问
|
|
func Forbidden(ctx *gin.Context) {
|
|
ctx.JSON(http.StatusForbidden, Response{
|
|
Code: "-7",
|
|
Message: "Forbidden",
|
|
Data: nil,
|
|
})
|
|
}
|
|
|
|
// InternalError 内部错误
|
|
func InternalError(ctx *gin.Context, err error) {
|
|
ctx.JSON(http.StatusInternalServerError, Response{
|
|
Code: "-1",
|
|
Message: "Internal server error",
|
|
Data: nil,
|
|
})
|
|
} |