列表標準格式
This commit is contained in:
		
							
								
								
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -1,3 +1,6 @@
 | 
				
			|||||||
 | 
					# Go
 | 
				
			||||||
 | 
					data/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# ---> Python
 | 
					# ---> Python
 | 
				
			||||||
# Byte-compiled / optimized / DLL files
 | 
					# Byte-compiled / optimized / DLL files
 | 
				
			||||||
__pycache__/
 | 
					__pycache__/
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										31
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								main.go
									
									
									
									
									
								
							@@ -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)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user