From cf199dfc01a0a3869518e95aa35f7eb6da23247c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A1=9C=E8=8F=AF?= Date: Tue, 18 Apr 2023 15:53:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=A8=99=E6=BA=96=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 +++ main.go | 31 +++++++++++++++++++++++-------- models/Image.go | 2 +- models/ListView.go | 22 ++++++++++++++++++++++ models/Model.go | 2 +- models/Tag.go | 2 +- models/Task.go | 2 +- models/User.go | 2 +- 8 files changed, 53 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index 33e7851..44a6996 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +# Go +data/ + # ---> Python # Byte-compiled / optimized / DLL files __pycache__/ diff --git a/main.go b/main.go index 73e8ae3..297e19f 100644 --- a/main.go +++ b/main.go @@ -6,22 +6,30 @@ import ( "net/http" "runtime" "time" + + "main/models" ) func main() { runtime.GOMAXPROCS(runtime.NumCPU()) - fmt.Println("Hello, World!") + http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { defer LogComponent(time.Now().UnixNano(), r) // 最后打印日志 - fmt.Fprintf(w, "Hello, World!") + var listview models.ListView + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.Write(listview.ToJson()) }) http.HandleFunc("/images", func(w http.ResponseWriter, r *http.Request) { defer LogComponent(time.Now().UnixNano(), r) // 最后打印日志 - fmt.Fprintf(w, "Hello, World!") + var listview models.ListView + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.Write(listview.ToJson()) }) http.HandleFunc("/models", func(w http.ResponseWriter, r *http.Request) { defer LogComponent(time.Now().UnixNano(), r) // 最后打印日志 - fmt.Fprintf(w, "Hello, World!") + var listview models.ListView + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.Write(listview.ToJson()) }) http.HandleFunc("/tasks", func(w http.ResponseWriter, r *http.Request) { defer LogComponent(time.Now().UnixNano(), r) // 最后打印日志 @@ -39,17 +47,24 @@ func main() { // for _, task := range tasks { // listView.Tasks = append(listView.Tasks, task) // } - - fmt.Fprintf(w, "Hello, World!") + var listview models.ListView + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.Write(listview.ToJson()) }) http.HandleFunc("/users", func(w http.ResponseWriter, r *http.Request) { defer LogComponent(time.Now().UnixNano(), r) // 最后打印日志 - fmt.Fprintf(w, "Hello, World!") + var listview models.ListView + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.Write(listview.ToJson()) }) http.HandleFunc("/tags", func(w http.ResponseWriter, r *http.Request) { defer LogComponent(time.Now().UnixNano(), r) // 最后打印日志 - fmt.Fprintf(w, "Hello, World!") + var listview models.ListView + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.Write(listview.ToJson()) }) + + log.Println("Web Server is running on http://localhost:8080") http.ListenAndServe(":8080", nil) } diff --git a/models/Image.go b/models/Image.go index 30a5a92..791bb43 100644 --- a/models/Image.go +++ b/models/Image.go @@ -16,7 +16,7 @@ type Image struct { // 使用SQLite3初始化數據庫 func init() { - db, err := sql.Open("sqlite3", "image.db") + db, err := sql.Open("sqlite3", "data/sqlite3/image.db") if err != nil { log.Fatal(err) } diff --git a/models/ListView.go b/models/ListView.go index 5c3f211..aa7c7c6 100644 --- a/models/ListView.go +++ b/models/ListView.go @@ -1,5 +1,10 @@ package models +import ( + "encoding/json" + "log" +) + type ListView struct { Code int `json:"code"` Page int `json:"page"` @@ -8,3 +13,20 @@ type ListView struct { Next bool `json:"next"` List []interface{} `json:"list"` } + +// 輸出JSON給瀏覽器 +func (listview *ListView) ToJson() []byte { + + // 即使list爲空,也要返回空的JSON數組 + if listview.List == nil { + listview.List = make([]interface{}, 0) + } + + // 輸出格式化的JSON + b, err := json.MarshalIndent(listview, "", " ") + if err != nil { + log.Println(err) + return nil + } + return b +} diff --git a/models/Model.go b/models/Model.go index 226d87e..489044a 100644 --- a/models/Model.go +++ b/models/Model.go @@ -16,7 +16,7 @@ type Model struct { // 使用SQLite3初始化數據庫 func init() { - db, err := sql.Open("sqlite3", "model.db") + db, err := sql.Open("sqlite3", "data/sqlite3/model.db") if err != nil { log.Fatal(err) } diff --git a/models/Tag.go b/models/Tag.go index 9c25d27..d908121 100644 --- a/models/Tag.go +++ b/models/Tag.go @@ -16,7 +16,7 @@ type Tag struct { // 使用SQLite3初始化數據庫 func init() { - db, err := sql.Open("sqlite3", "tag.db") + db, err := sql.Open("sqlite3", "data/sqlite3/tag.db") if err != nil { log.Fatal(err) } diff --git a/models/Task.go b/models/Task.go index 33c624a..775b2d8 100644 --- a/models/Task.go +++ b/models/Task.go @@ -16,7 +16,7 @@ type Task struct { // 使用SQLite3初始化數據庫 func init() { - db, err := sql.Open("sqlite3", "task.db") + db, err := sql.Open("sqlite3", "data/sqlite3/task.db") if err != nil { log.Fatal(err) } diff --git a/models/User.go b/models/User.go index df50ae7..af01866 100644 --- a/models/User.go +++ b/models/User.go @@ -17,7 +17,7 @@ type User struct { // 使用SQLite3初始化數據庫 func init() { - db, err := sql.Open("sqlite3", "user.db") + db, err := sql.Open("sqlite3", "data/sqlite3/user.db") if err != nil { log.Fatal(err) }