在 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} 路徑下獲得和檢索用戶信息。






