在 golang 中,使用函數處理 web 請求路由是一種可擴展、模塊化的 api 構建方法。它涉及以下步驟:安裝 http 路由器庫。創建一個路由器。為路由定義路徑模式和處理函數。編寫處理函數來處理請求和返回響應。使用 http 服務器運行路由器。這個過程允許在處理傳入請求時使用模塊化的方法,從而提高了可重用性、可維護性和可測試性。
如何使用 Golang 函數處理 Web 請求路由
在 Golang 中,使用函數處理 Web 請求路由是一種構建可擴展、模塊化 API 的常用方法。本文將向你展示如何使用 HTTP 路由器庫(例如 <a style="color:#f60; text-decoration:underline;" href="https://www.php.cn/zt/15841.html" target="_blank">git</a>hub.com/gorilla/mux
)來定義路由并使用處理函數來處理傳入的請求。
第一步:安裝 HTTP 路由器庫
import "github.com/gorilla/mux"
登錄后復制
第二步:創建路由器
router := mux.NewRouter()
登錄后復制
第三步:定義路由
為路由定義路徑模式,并指定用于處理請求的處理函數。例如:
router.HandleFunc("/users", getUsers).Methods("GET") // GET /users 處理函數 router.HandleFunc("/users/{id}", getUser).Methods("GET") // GET /users/{id} 處理函數
登錄后復制
第四步:編寫處理函數
處理函數是用于處理傳入請求并返回響應的函數。以下是處理函數示例:
func getUsers(w http.ResponseWriter, r *http.Request) { // 獲取所有用戶數據 users := []User{ {ID: 1, Name: "John"}, {ID: 2, Name: "Jane"}, } // 以 JSON 格式編碼響應 json, err := json.Marshal(users) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } // 設置響應標頭和狀態代碼 w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusOK) // 寫入響應主體 w.Write(json) }
登錄后復制
第五步:運行路由器
使用 HTTP 服務器啟動路由器,例如:
srv := &http.Server{ Handler: router, Addr: ":8080", } if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed { log.Fatal(err) }
登錄后復制
實戰案例
創建一個簡單的 API 來管理用戶:
package main import ( "github.com/gorilla/mux" "net/http" ) type User struct { ID int Name string } var users = []User{ {1, "John"}, {2, "Jane"}, } func main() { router := mux.NewRouter() router.HandleFunc("/users", Get).Methods("GET") router.HandleFunc("/users/{id}", GetByID).Methods("GET") srv := &http.Server{ Handler: router, Addr: ":8080", } srv.ListenAndServe() } func Get(w http.ResponseWriter, r *http.Request) { json.Encode(w, users) } func GetByID(w http.ResponseWriter, r *http.Request) { id := mux.Vars(r)["id"] // 從 URL 中提取參數 for _, user := range users { if user.ID == id { json.Encode(w, user) return } } http.Error(w, "Not found", http.StatusNotFound) }
登錄后復制
通過運行此程序,你可以在 localhost:8080/users
和 localhost:8080/users/{id}
路徑下獲得和檢索用戶信息。