feat(response): 统一结构返回
This commit is contained in:
73
response/response.go
Normal file
73
response/response.go
Normal file
@ -0,0 +1,73 @@
|
||||
package response
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"github.com/gin-gonic/gin"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
type Response struct {
|
||||
Code int `json:"code"`
|
||||
Message string `json:"message"`
|
||||
Data any `json:"data,omitempty"`
|
||||
}
|
||||
|
||||
func NewResponse() *Response {
|
||||
return &Response{
|
||||
Code: http.StatusOK,
|
||||
Message: "success",
|
||||
}
|
||||
}
|
||||
|
||||
func (r *Response) WithCode(code int) *Response {
|
||||
r.Code = code
|
||||
return r
|
||||
}
|
||||
|
||||
func (r *Response) WithMessage(message string) *Response {
|
||||
r.Message = message
|
||||
return r
|
||||
}
|
||||
|
||||
func (r *Response) WithData(data any) *Response {
|
||||
r.Data = data
|
||||
return r
|
||||
}
|
||||
|
||||
func (r *Response) Error(err error) *Response {
|
||||
r.Code = http.StatusInternalServerError
|
||||
r.Message = err.Error()
|
||||
return r
|
||||
}
|
||||
|
||||
func (r *Response) Success(message ...string) *Response {
|
||||
r.Code = http.StatusOK
|
||||
if len(message) > 0 {
|
||||
r.Message = message[0]
|
||||
} else {
|
||||
r.Message = "success"
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
func (r *Response) Fail(message ...string) *Response {
|
||||
r.Code = http.StatusInternalServerError
|
||||
if len(message) > 0 {
|
||||
r.Message = message[0]
|
||||
} else {
|
||||
r.Message = "fail"
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
func (r *Response) Send(c *gin.Context) {
|
||||
c.JSON(http.StatusOK, r)
|
||||
}
|
||||
|
||||
func (r *Response) ToJSON() (string, error) {
|
||||
data, err := json.Marshal(r)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return string(data), nil
|
||||
}
|
Reference in New Issue
Block a user