Files
infinite-canvas/handler/response.go
T
HouYunFei 499439d66b fix(handler): 统一错误处理并替换Next.js重写为路由处理器
- 将所有handler中的Fail函数调用替换为FailError以统一错误处理
- 添加FailError函数实现统一的错误日志记录和响应格式
- 移除Next.js配置中的rewrites并实现统一的API路由代理处理器
- 新增路由处理器支持长连接和大文件上传场景的代理转发
- 更新错误处理逻辑避免将内部错误详情暴露给前端用户
2026-05-22 14:15:45 +08:00

49 lines
1.0 KiB
Go

package handler
import (
"encoding/json"
"log"
"net/http"
"strconv"
"github.com/basketikun/infinite-canvas/model"
)
type response struct {
Code int `json:"code"`
Data any `json:"data"`
Msg string `json:"msg"`
}
func OK(w http.ResponseWriter, data any) {
writeJSON(w, response{Code: 0, Data: data, Msg: "ok"})
}
func Fail(w http.ResponseWriter, msg string) {
writeJSON(w, response{Code: 1, Data: nil, Msg: msg})
}
func FailError(w http.ResponseWriter, err error) {
log.Printf("request failed: %v", err)
Fail(w, "操作失败")
}
func writeJSON(w http.ResponseWriter, value any) {
w.Header().Set("Content-Type", "application/json")
_ = json.NewEncoder(w).Encode(value)
}
func parseQuery(r *http.Request) model.Query {
q := r.URL.Query()
page, _ := strconv.Atoi(q.Get("page"))
pageSize, _ := strconv.Atoi(q.Get("pageSize"))
return model.Query{
Keyword: q.Get("keyword"),
Tags: q["tag"],
Category: q.Get("category"),
Type: q.Get("type"),
Page: page,
PageSize: pageSize,
}
}