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