代码拉取完成,页面将自动刷新
package restful
import (
"encoding/json"
"github.com/ibuilding-x/driver-box/driverbox/restful/response"
"github.com/ibuilding-x/driver-box/internal/logger"
"github.com/julienschmidt/httprouter"
"go.uber.org/zap"
"net/http"
)
var HttpRouter = httprouter.New()
// Handler 处理函数
type Handler func(*http.Request) (any, error)
// HandleFunc 注册处理函数
func HandleFunc(method, pattern string, handler Handler) {
logger.Logger.Info("register api", zap.String("method", method), zap.String("pattern", pattern))
HttpRouter.HandlerFunc(method, pattern, func(writer http.ResponseWriter, request *http.Request) {
// 定义响应数据结构
var data response.Common
// 处理请求
result, err := handler(request)
if err != nil {
// 定义错误信息
data.ErrorMsg = err.Error()
// 定义错误码
if code, ok := errorCodes[err]; ok {
data.ErrorCode = code
} else {
data.ErrorCode = errorCodes[UndefinedErr]
}
} else {
data.Success = true
data.ErrorCode = 200
data.Data = result
}
// 设置响应头
writer.Header().Set("Content-Type", "application/json")
// 序列化响应数据
b, err := json.Marshal(data)
if err != nil {
logger.Logger.Error("[api] json marshal fail", zap.Error(err))
http.Error(writer, err.Error(), http.StatusInternalServerError)
return
}
// 写入响应数据
_, err = writer.Write(b)
if err != nil {
logger.Logger.Error("[api] write response fail", zap.Error(err))
http.Error(writer, err.Error(), http.StatusInternalServerError)
return
}
})
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。