38 lines
1.0 KiB
Go
38 lines
1.0 KiB
Go
package response
|
|
|
|
import (
|
|
"122.51.31.227/go-course/go18/book/v3/exception"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// 当前请求成功的时候,我们应用返回的数据
|
|
// 1. {code: 0, data: {}}
|
|
// 2. 正常直接返回数据, Restful接口 怎么知道这些请求是成功还是失败喃? 通过HTTP判断 2xx
|
|
// 如果后面 所有的返回数据 要进过特殊处理,都在这个函数内进行扩展,方便维护,比如 数据脱敏
|
|
func OK(ctx *gin.Context, data any) {
|
|
// v, ok := data.(Densener)
|
|
ctx.JSON(200, data)
|
|
ctx.Abort()
|
|
}
|
|
|
|
// 当前请求失败的时候, 我们返回的数据格式
|
|
// 1. {code: xxxx, data: null, message: "错误信息"}
|
|
// 请求HTTP Code 非 2xx 就返回我们自定义的异常
|
|
//
|
|
// {
|
|
// "code": 404,
|
|
// "message": "book 1 not found"
|
|
// }
|
|
func Failed(ctx *gin.Context, err error) {
|
|
// 一种是我们自己的业务异常
|
|
if e, ok := err.(*exception.ApiException); ok {
|
|
ctx.JSON(e.HttpCode, e)
|
|
ctx.Abort()
|
|
return
|
|
}
|
|
|
|
// 非业务异常
|
|
ctx.JSON(500, exception.NewApiException(500, err.Error()))
|
|
ctx.Abort()
|
|
}
|