列表標準格式

This commit is contained in:
2023-04-18 15:53:13 +08:00
parent 62f2e55ffa
commit cf199dfc01
8 changed files with 53 additions and 13 deletions

3
.gitignore vendored
View File

@@ -1,3 +1,6 @@
# Go
data/
# ---> Python # ---> Python
# Byte-compiled / optimized / DLL files # Byte-compiled / optimized / DLL files
__pycache__/ __pycache__/

31
main.go
View File

@@ -6,22 +6,30 @@ import (
"net/http" "net/http"
"runtime" "runtime"
"time" "time"
"main/models"
) )
func main() { func main() {
runtime.GOMAXPROCS(runtime.NumCPU()) runtime.GOMAXPROCS(runtime.NumCPU())
fmt.Println("Hello, World!")
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
defer LogComponent(time.Now().UnixNano(), r) // 最后打印日志 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) { http.HandleFunc("/images", func(w http.ResponseWriter, r *http.Request) {
defer LogComponent(time.Now().UnixNano(), r) // 最后打印日志 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) { http.HandleFunc("/models", func(w http.ResponseWriter, r *http.Request) {
defer LogComponent(time.Now().UnixNano(), r) // 最后打印日志 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) { http.HandleFunc("/tasks", func(w http.ResponseWriter, r *http.Request) {
defer LogComponent(time.Now().UnixNano(), r) // 最后打印日志 defer LogComponent(time.Now().UnixNano(), r) // 最后打印日志
@@ -39,17 +47,24 @@ func main() {
// for _, task := range tasks { // for _, task := range tasks {
// listView.Tasks = append(listView.Tasks, task) // listView.Tasks = append(listView.Tasks, task)
// } // }
var listview models.ListView
fmt.Fprintf(w, "Hello, World!") w.Header().Set("Content-Type", "application/json; charset=utf-8")
w.Write(listview.ToJson())
}) })
http.HandleFunc("/users", func(w http.ResponseWriter, r *http.Request) { http.HandleFunc("/users", func(w http.ResponseWriter, r *http.Request) {
defer LogComponent(time.Now().UnixNano(), r) // 最后打印日志 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) { http.HandleFunc("/tags", func(w http.ResponseWriter, r *http.Request) {
defer LogComponent(time.Now().UnixNano(), r) // 最后打印日志 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) http.ListenAndServe(":8080", nil)
} }

View File

@@ -16,7 +16,7 @@ type Image struct {
// 使用SQLite3初始化數據庫 // 使用SQLite3初始化數據庫
func init() { func init() {
db, err := sql.Open("sqlite3", "image.db") db, err := sql.Open("sqlite3", "data/sqlite3/image.db")
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }

View File

@@ -1,5 +1,10 @@
package models package models
import (
"encoding/json"
"log"
)
type ListView struct { type ListView struct {
Code int `json:"code"` Code int `json:"code"`
Page int `json:"page"` Page int `json:"page"`
@@ -8,3 +13,20 @@ type ListView struct {
Next bool `json:"next"` Next bool `json:"next"`
List []interface{} `json:"list"` 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
}

View File

@@ -16,7 +16,7 @@ type Model struct {
// 使用SQLite3初始化數據庫 // 使用SQLite3初始化數據庫
func init() { func init() {
db, err := sql.Open("sqlite3", "model.db") db, err := sql.Open("sqlite3", "data/sqlite3/model.db")
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }

View File

@@ -16,7 +16,7 @@ type Tag struct {
// 使用SQLite3初始化數據庫 // 使用SQLite3初始化數據庫
func init() { func init() {
db, err := sql.Open("sqlite3", "tag.db") db, err := sql.Open("sqlite3", "data/sqlite3/tag.db")
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }

View File

@@ -16,7 +16,7 @@ type Task struct {
// 使用SQLite3初始化數據庫 // 使用SQLite3初始化數據庫
func init() { func init() {
db, err := sql.Open("sqlite3", "task.db") db, err := sql.Open("sqlite3", "data/sqlite3/task.db")
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }

View File

@@ -17,7 +17,7 @@ type User struct {
// 使用SQLite3初始化數據庫 // 使用SQLite3初始化數據庫
func init() { func init() {
db, err := sql.Open("sqlite3", "user.db") db, err := sql.Open("sqlite3", "data/sqlite3/user.db")
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }