package routers import ( "encoding/json" "fmt" "net/http" "os" "path/filepath" "github.com/gorilla/mux" ) func init() { // 初始化检查 data/setting 目录是否存在,不存在则创建 if _, err := os.Stat("data/settings"); os.IsNotExist(err) { if err := os.MkdirAll("data/settings", 0755); err != nil { fmt.Println(err) } } // 初始化阿里云短信服务配置 aliyun.json if _, err := os.Stat("data/settings/aliyun.json"); os.IsNotExist(err) { // 如果不存在则创建 var config = struct { AccessKeyId string AccessKeySecret string SignName string TemplateCode string }{ AccessKeyId: "your-access-key-id", AccessKeySecret: "", SignName: "", TemplateCode: "", } data, err := json.MarshalIndent(config, "", " ") if err != nil { fmt.Println(err) return } err = os.WriteFile("data/settings/aliyun.json", data, 0644) if err != nil { fmt.Println(err) return } fmt.Println("初始化阿里云短信服务配置 aliyun.json 成功") fmt.Println(string(data)) } } func SettingsGetItem(w http.ResponseWriter, r *http.Request) { // 从 data/setting 目录下读取json文件 vars := mux.Vars(r) filename := vars["id"] + ".json" data, err := os.ReadFile("data/settings/" + filename) if err != nil { fmt.Println(err) return } w.Write(data) } func SettingsGet(w http.ResponseWriter, r *http.Request) { // 获取设置列表, 直接从 data/setting 目录下读取json文件列表 var files []string err := filepath.Walk("data/settings", func(path string, info os.FileInfo, err error) error { if info.IsDir() { return nil } // 去除文件后缀名, 且不要展示路径 files = append(files, info.Name()[:len(info.Name())-5]) return nil }) if err != nil { fmt.Println(err) return } fmt.Println(files) // 输出json列表, files 数组转 JSON data, _ := json.MarshalIndent(files, "", " ") w.Write(data) } // 创建一条设置 func SettingsPost(w http.ResponseWriter, r *http.Request) { w.Write([]byte("[]")) } // 读取一条设置 func SettingsItemGet(w http.ResponseWriter, r *http.Request) { w.Write([]byte("[]")) } // 修改一条设置 func SettingsPatch(w http.ResponseWriter, r *http.Request) { w.Write([]byte("[]")) }