Di Golang, menggunakan fungsi untuk mengendalikan penghalaan permintaan web ialah cara yang boleh diperluas dan modular untuk membina API. Ia melibatkan langkah berikut: Pasang pustaka penghala HTTP. Buat penghala. Tentukan corak laluan dan fungsi pengendali untuk laluan. Tulis fungsi pengendali untuk mengendalikan permintaan dan membalas respons. Jalankan penghala menggunakan pelayan HTTP. Proses ini membolehkan pendekatan modular apabila mengendalikan permintaan masuk, dengan itu meningkatkan kebolehgunaan semula, kebolehselenggaraan dan kebolehujian.
Cara menggunakan fungsi Golang untuk mengendalikan penghalaan permintaan web
Di Golang, menggunakan fungsi untuk mengendalikan penghalaan permintaan web ialah pendekatan biasa untuk membina API modular yang boleh dikembangkan. Artikel ini akan menunjukkan kepada anda cara menggunakan pustaka penghala HTTP (seperti github.com/gorilla/mux
) untuk menentukan laluan dan menggunakan pengendali untuk mengendalikan permintaan masuk. github.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}
localhost:8080/users
dan localhost:8080/users/{id}
. 🎜Atas ialah kandungan terperinci Cara menggunakan fungsi Golang untuk mengendalikan penghalaan permintaan web. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!