在 go 框架中,通过创建 mux 实例可自定义路由,将路由路径映射到处理程序。http 处理程序是响应 http 请求的函数,可执行操作如获取请求数据或返回内容。
Go 框架路由和 HTTP 处理程序自定义
在 Go 框架中,路由是连接 HTTP 请求和相应处理程序的关键组件。Go 框架提供了强大的路由系统,允许开发人员轻松自定义路由和处理程序。
路由自定义
立即学习“go语言免费学习笔记(深入)”;
要自定义路由,需要创建一个新的 mux 实例,并使用它注册路由路径和对应的处理程序。mux 实例可以被看作是一个路由表,其中每个路由都映射到一个特定的处理程序函数。
package main
import (
"fmt"
"log"
"net/http"
"<a style='color:#f60; text-decoration:underline;' href="https://www.php.cn/zt/15841.html" target="_blank">git</a>hub.com/gorilla/mux"
)
func main() {
// 创建一个路由器
r := mux.NewRouter()
// 注册路由
r.HandleFunc("/", HomeHandler)
r.HandleFunc("/about", AboutHandler)
r.HandleFunc("/contact", ContactHandler)
// 监听端口
log.Fatal(http.ListenAndServe(":8080", r))
}
func HomeHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "Home page")
}
func AboutHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "About page")
}
func ContactHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "Contact page")
}
HTTP 处理程序自定义
HTTP 处理程序是在收到 HTTP 请求时调用的函数。它可以进行各种操作,例如获取请求数据、设置响应并返回内容。
func HomeHandler(w http.ResponseWriter, r *http.Request) {
// 获取请求方法
method := r.Method
// 设置响应状态和内容类型
w.WriteHeader(http.StatusOK)
w.Header().Set("Content-Type", "text/plain")
// 根据请求方法返回不同的内容
if method == http.MethodGet {
fmt.Fprintln(w, "GET request received")
} else if method == http.MethodPost {
fmt.Fprintln(w, "POST request received")
} else {
fmt.Fprintln(w, "Unknown request method")
}
}
实战案例
以上自定义路由和 HTTP 处理程序的代码示例可以看作是一个简单的 Go 框架。它允许使用不同的路由路径访问不同的处理程序,并根据请求方法返回不同的内容。
实际应用中,你可以扩展此示例以创建更复杂的框架,包括:
- 注册更多的路由和处理程序
- 添加中间件进行处理链
- 处理错误并返回自定义响应
- 集成模板引擎进行动态内容渲染