什么是Web应用
Web应用简单来说就是能够通过网络访问并得到响应的应用程序。
如果说使用普通的应用是去超市买东西,那么Web应用就是能够在网上下单并且配送到家的线上购物。
如何实现
如何实现这样一个Web程序呢,每种语言对web应用都有标准库的支持,这意味着我们只需要使用官方的sdk就能够构建出一个简单的web应用。
net/http
func main() {
// 注册
http.HandleFunc("/", indexHandler)
// 监听
log.Fatal(http.ListenAndServe(":9999", nil))
}
// 如何响应
func indexHandler(w http.ResponseWriter, req *http.Request) {
fmt.Fprintf(w, "URL.Path = %q\n", req.URL.Path)
}
通过http库的方法帮我们建立了映射关系。每当我们发出这样的指令时,Web应用都需要根据指定找到特定的方法。
我们可以用这样一个例子描述这样的关系:
我们在家拨打了超市的电话,并且在电话中说:”我需要一个面包”
电话那头的超市员工听到了我们的需求,并且在一个手册上找到了面包的货架,
最后这个面包通过一系列包装处理,被送到了我们的手中。
框架
入口:http.ListenAndServe(":9999", nil)
Engine结构体实现Handler接口
如果不进行有效的封装,那么框架的用户将需要写大量重复,繁杂的代码,而且容易出错
在这之前,我们的Router挂载的方法是:
而现在,Router需要挂载的方法变成了
这意味这我们去定义响应时,是基于context去进行设计,不用直接和http.ResponseWriter
与*http.Request打交道