| 12345678910111213141516171819202122232425262728293031323334353637 |
- package myhandle
-
- import (
- "encoding/json"
- "net/http"
- "time"
-
- "git.x2erp.com/qdy/go-base/types"
- )
-
- // queryHandler - 最简单的版本
- func QueryHandlerJson[T any, F any](
- w http.ResponseWriter,
- r *http.Request,
- factory F,
- handlerFunc func(F, T) *types.QueryResult,
- ) {
- // 解析请求参数
- var req T
- if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
- // 如果解析失败,也返回 QueryResult 格式
- w.Header().Set("Content-Type", "application/json")
- json.NewEncoder(w).Encode(&types.QueryResult{
- Success: false,
- Error: "Invalid request body: " + err.Error(),
- Time: time.Now().Format(time.RFC3339),
- })
- return
- }
-
- // 执行业务逻辑
- result := handlerFunc(factory, req)
-
- // 设置头,写入结果
- w.Header().Set("Content-Type", "application/json")
- json.NewEncoder(w).Encode(result)
- }
|