什么是Web应用

Web应用简单来说就是能够通过网络访问并得到响应的应用程序。
如果说使用普通的应用是去超市买东西,那么Web应用就是能够在网上下单并且配送到家的线上购物。
image.png

如何实现

如何实现这样一个Web程序呢,每种语言对web应用都有标准库的支持,这意味着我们只需要使用官方的sdk就能够构建出一个简单的web应用。
net/http

  1. func main() {
  2. // 注册
  3. http.HandleFunc("/", indexHandler)
  4. // 监听
  5. log.Fatal(http.ListenAndServe(":9999", nil))
  6. }
  7. // 如何响应
  8. func indexHandler(w http.ResponseWriter, req *http.Request) {
  9. fmt.Fprintf(w, "URL.Path = %q\n", req.URL.Path)
  10. }

通过http库的方法帮我们建立了映射关系。每当我们发出这样的指令时,Web应用都需要根据指定找到特定的方法。
我们可以用这样一个例子描述这样的关系:
我们在家拨打了超市的电话,并且在电话中说:”我需要一个面包”
电话那头的超市员工听到了我们的需求,并且在一个手册上找到了面包的货架,
最后这个面包通过一系列包装处理,被送到了我们的手中。
image.png

框架
入口:http.ListenAndServe(":9999", nil)
image.png
image.png

Engine结构体实现Handler接口
image.png

image.png

image.png

image.png
如果不进行有效的封装,那么框架的用户将需要写大量重复,繁杂的代码,而且容易出错

image.png
在这之前,我们的Router挂载的方法是:
image.png
而现在,Router需要挂载的方法变成了
image.png
这意味这我们去定义响应时,是基于context去进行设计,不用直接和http.ResponseWriter
与*http.Request打交道