GO WEB编程
路由器的定义
在Web开发中,路由器就是负责接收传入的 HTTP请求,并且将这个请求映射到合适的处理函数的组建。这样的路由器常常被集成到Web服务器中。
说的简单一些,就是会根据 http 请求的 url 路径 ,去找到相对应的函数来调用。
比如我们路由器监听"/"这个根目录 url ,然后绑定了handle这个函数。一旦路由器接收到了任何 url ,都会调用 handle 这个函数。
根本就是说,路由将url请求和函数响应绑定在了一起。
最后呢说说好处,路由器的这个机制使得你可以根据不同的 URL 路径和 HTTP 方法来分发请求到不同的处理逻辑,从而实现不同页面、API 端点等的响应。这种模式使得 Web 应用程序的开发更加模块化和易于维护。
例子:一个简单路由
func main(){
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request){
w.Write([]byte("Hello World!"))
})
http.ListenAndServe("localhost:8080", nil)
}
函数体第一行代码将 url 和响应函数绑定,响应函数的功能是写"Hello World!" , 然后第二行的作用是开启这个路由器,并且端口是8080
对接口的理解
定义: 在 Go 中,接口(interface)是一种类型,它定义了一组方法的签名,而不关心这些方法是如何实现的。 使用: 在 Go 中,接口的方法签名包括方法的名称、参数列表和返回值类型。如果你想要一个类型实现某个接口,那么这个类型的方法必须与接口中定义的方法具有相同的方法签名,包括参数列表和返回值类型。 所以,我们只要实现了这个接口的函数,就认为是这个接口的类型。可以用这个接口来访问我们的自定义类型。 理解: 对接口的定义好比我们需要对做菜这个行为做出定义。需要将几样菜拿过来,产出成菜。
参数(原材料): 这是接口方法的输入,就像做菜时需要原材料。在接口中,参数列表定义了方法需要的输入参数。
接口(具体实现): 接口定义了一组方法签名,就像菜谱定义了一系列步骤。不同的类型可以根据接口的定义来实现相应的方法,就像不同的厨师可以根据菜谱来制作不同的菜肴。
返回值(最终成菜): 这是接口方法的输出,就像做菜后获得的最终成品。在接口中,返回值类型定义了方法的输出结果。
在这个比喻中,强调了关注点在于能否完成工作,而不必关心具体的实现细节。这就是接口的一大优势:可以通过关注于方法签名和预期的功能,将不同的类型统一起来,以满足特定的需求。
handler自定义函数的实现
为了实现http.Handler接口,我们需要实现这个方法ServeHTTP。如果函数实现了这个方法,就会被认为实现了接口,在路由handle函数方法调用时可以使用这个函数。
具体实现:
type 自定义函数结构体 struct{}
func (m *自定义函数结构体) ServeHTTP(w http.ResponseWriter, r *http.Request){
给w做响应操作
}
func main(){
x := &自定义函数结构体
http.Handle("路径url", &x)
//服务器配置
server := http.Server{
Addr: "localhost:8080",
Handler: nil,
}
//服务器启动
server.ListenAndServe()
}