我正在考虑使用标准库进行路由的方法.有一个处理函数是否有效,它将根据请求类型调用其他处理函数?例如
func main() {
m := http.NewServeMux()
m.HandleFunc("/books", books)
// ...
}
func books(w http.ResponseWriter, r *http.Request) {
switch r.Method {
case "GET":
getBooks(w, r)
case "POST":
createBook(w, r)
}
}
Run Code Online (Sandbox Code Playgroud)
这是好习惯吗?我不想声明自定义处理程序,因为我发现函数更清洁一些.
是的,这是完全有效的; 处理程序只是函数,所以没有理由不应该这样.实际上,这就是中间件通常的实现方式.
根本没有关于处理程序函数的"魔力".只要您正在写入正确的文件描述符(w http.ResponseWriter),任何事情都会发生.
这并不意味着使用这种模式对于所有应用程序来说都是一个好主意 - 路由库存在是有原因的 - 但对于较小的程序,它可以正常工作.
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |