db5d114428
- 实现了管理后台模型渠道的增删改查功能 - 将前端直接调用API改为通过后端接口代理获取模型列表 - 添加了渠道测试连接和模型可用性检测功能 - 实现了API Key安全存储机制,前端不再明文显示 - 更新了管理后台设置页面的渠道配置界面 - 添加了表格选中行背景色主题配置支持 - 重构了错误处理机制,统一返回安全错误信息 - 整理了后端模型代理路径为OpenAI风格的/api/v1/*
53 lines
1.1 KiB
Go
53 lines
1.1 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)
|
|
if safe, ok := err.(interface{ SafeMessage() string }); ok {
|
|
Fail(w, safe.SafeMessage())
|
|
return
|
|
}
|
|
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,
|
|
}
|
|
}
|