package main import ( "fmt" "log" "net/http" "runtime" "time" "main/models" ) func main() { runtime.GOMAXPROCS(runtime.NumCPU()) http.HandleFunc("/api", func(w http.ResponseWriter, r *http.Request) { defer LogComponent(time.Now().UnixNano(), r) // 最后打印日志 wecome := "Welcome to the home page!" w.Write([]byte(wecome)) }) http.HandleFunc("/api/images", func(w http.ResponseWriter, r *http.Request) { defer LogComponent(time.Now().UnixNano(), r) // 最后打印日志 var listview models.ListView w.Header().Set("Content-Type", "application/json; charset=utf-8") w.Write(listview.ToJson()) }) http.HandleFunc("/api/models", func(w http.ResponseWriter, r *http.Request) { defer LogComponent(time.Now().UnixNano(), r) // 最后打印日志 var listview models.ListView w.Header().Set("Content-Type", "application/json; charset=utf-8") w.Write(listview.ToJson()) }) http.HandleFunc("/api/tasks", func(w http.ResponseWriter, r *http.Request) { defer LogComponent(time.Now().UnixNano(), r) // 最后打印日志 // 查詢一組任務 // tasks, err := models.GetTasks() // if err != nil { // log.Println(err) // return // } // fmt.Println(tasks) // 將取得的任務裝載到ListView中 // listView := ListView{} // for _, task := range tasks { // listView.Tasks = append(listView.Tasks, task) // } var listview models.ListView w.Header().Set("Content-Type", "application/json; charset=utf-8") w.Write(listview.ToJson()) }) http.HandleFunc("/api/users", func(w http.ResponseWriter, r *http.Request) { defer LogComponent(time.Now().UnixNano(), r) // 最后打印日志 var listview models.ListView w.Header().Set("Content-Type", "application/json; charset=utf-8") w.Write(listview.ToJson()) }) http.HandleFunc("/api/tags", func(w http.ResponseWriter, r *http.Request) { defer LogComponent(time.Now().UnixNano(), r) // 最后打印日志 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) } func LogComponent(startTime int64, r *http.Request) { ms := (time.Now().UnixNano() - startTime) / 1000000 color := "\033[1;32m%d\033[0m" if ms > 800 { color = "\033[1;31m%dms\033[0m" // 紅色加重 } else if ms > 500 { color = "\033[1;33m%dms\033[0m" // 黃色加重 } else if ms > 300 { color = "\033[1;32m%dms\033[0m" // 綠色加重 } else if ms > 200 { color = "\033[1;34m%dms\033[0m" // 藍色加重 } else if ms > 100 { color = "\033[1;35m%dms\033[0m" // 紫色加重 } else { color = "\033[1;36m%dms\033[0m" // 黑色加重 } endTime := fmt.Sprintf(color, ms) method := fmt.Sprintf("\033[1;32m%s\033[0m", r.Method) // 綠色加重 url := fmt.Sprintf("\033[1;34m%s\033[0m", r.URL) // 藍色加重 log.Println(method, url, endTime) }