84 lines
2.5 KiB
Go
84 lines
2.5 KiB
Go
package response
|
||
|
||
import (
|
||
"time"
|
||
|
||
"github.com/gin-gonic/gin"
|
||
)
|
||
|
||
type response struct {
|
||
Code int `json:"code"`
|
||
Msg string `json:"msg"`
|
||
Data any `json:"data"`
|
||
Timestamp int64 `json:"timestamp"`
|
||
}
|
||
|
||
// api 返回结构体
|
||
type api struct {
|
||
JSON *response
|
||
c *gin.Context
|
||
}
|
||
|
||
// Success 函数用于创建一个包含成功响应的 api 对象。
|
||
// 参数 c 是 Gin 框架的上下文对象,用于处理请求和响应。
|
||
// 返回值是一个指向 API 结构体的指针,其中包含 JSON 响应数据。
|
||
func Success(c *gin.Context) *api {
|
||
// 创建响应结构体,包含状态码和时间戳
|
||
json := &response{
|
||
Code: 200, // 成功的状态码
|
||
Timestamp: time.Now().Unix(), // 当前时间的时间戳
|
||
}
|
||
// 创建 api 结构体实例,并将响应数据和上下文对象赋值给它
|
||
r := &api{
|
||
JSON: json, // JSON 响应数据
|
||
c: c, // Gin 上下文对象
|
||
}
|
||
return r // 返回 api 对象的指针
|
||
}
|
||
|
||
// Error 函数用于创建一个包含错误响应的 api 对象。
|
||
// 参数 c 是 Gin 框架的上下文对象,用于处理请求和响应。
|
||
// 返回值是一个指向 api 结构体的指针,其中包含 JSON 响应数据。
|
||
func Error(c *gin.Context) *api {
|
||
json := &response{
|
||
Code: 200,
|
||
Timestamp: time.Now().Unix(),
|
||
}
|
||
r := &api{
|
||
JSON: json,
|
||
c: c,
|
||
}
|
||
return r
|
||
}
|
||
|
||
// SetMsg 方法用于设置 api 对象的 JSON 响应数据中的 Msg 字段。
|
||
// 参数 msg 是要设置的消息字符串。
|
||
// 返回值是指向 api 结构体的指针,用于链式调用。
|
||
func (r *api) SetMsg(msg string) *api {
|
||
r.JSON.Msg = msg
|
||
return r
|
||
}
|
||
|
||
// SetData 方法用于设置 api 对象的 JSON 响应数据中的 Data 字段。
|
||
// 参数 data 是要设置的数据,类型为 any(任意类型)。
|
||
// 返回值是指向 api 结构体的指针,用于链式调用。
|
||
func (r *api) SetData(data any) *api {
|
||
r.JSON.Data = data
|
||
return r
|
||
}
|
||
|
||
// SetCode 方法用于设置 api 对象的 JSON 响应数据中的 Code 字段。
|
||
// 参数 code 是要设置的状态码,类型为 int。
|
||
// 返回值是指向 api 结构体的指针,用于链式调用。
|
||
func (r *api) SetCode(code int) *api {
|
||
r.JSON.Code = code
|
||
return r
|
||
}
|
||
|
||
// End 方法用于将 api 对象的 JSON 响应数据发送给客户端。
|
||
// 它使用 Gin 上下文对象的 JSON 方法将 JSON 响应数据发送给客户端。
|
||
// 参数 r 是指向 api 结构体的指针,包含 JSON 响应数据和 Gin 上下文对象。
|
||
func (r *api) End() {
|
||
r.c.JSON(r.JSON.Code, r.JSON)
|
||
}
|