01_mini-web
本章节学习目标
- 能够知道Web开发流程
- 能够知道使用web应用程序处理客户端的动态资源请求操作
- 能够知道路由列表的实现
- 能够知道装饰器方式的添加路由
- 能够知道logging日志的使用
本章节常用单词
- request 英 [rɪ'kwest] 请求;需要
- response 英 [rɪ'spɒns] 响应;反应;
- route 英 [ruːt] 按某路线发送 ; 路由
- template 英 ['templeɪt; -plɪt] 模板,样板
- source 英 [sɔːs] 来源;水源;
1.1 HTTP 协议
学习目标:
- 常握 HTTP 协议中 URL 地址、请求报文和响应报文的基本格式
1.1.1 HTTP 协议简介
Web应用程序开发主要是建立在 B/S 架构模式下,即通常基于浏览器作为客户端通过URL去请求访问Web服务端,Web服务端处理对应请求之后,给客户端返回响应数据,客户端根据响应数据进行页面的解析和数据的展示。
在Web客户端和服务端通信的过程中,其数据的传输和响应遵循HTTP协议。
HTTP协议是 Hyper Text Transfer Protocol【超文本传输协议】的缩写,是用于从万维网【WWW:World Wide Web 】服务器传输超文本到本地浏览器的传送协议。
HTTP是一个属于应用层的协议,于1990年被提出,基于TCP/IP通信协议来传递数据(HTML 文件、图片文件、查询结果等)。
(1) HTTP协议之URL
Web应用程序中,客户端需要通过URL来向Web服务器发送请求,下面我们来看一个完整的URL地址:
http://movie.douban.com:80/annual/2019?source=navigation
对于上面的这个URL地址,其主要分为以下几个部分:
URL部分 | 说明 |
---|---|
http |
http是协议部分,表示遵循http协议的请求,常见的协议还有:https |
movie.douban.com |
域名部分,域名和IP是对应的,可以换成对应服务器的IP,只不过域名 更容易记忆 |
80 |
端口部分,可以省略,默认就是访问80端口,如果是https协议,默认 访问443端口 |
/annual/2019 |
资源路径部分,表明要请求的是服务主机上的什么资源 |
?source=navigation |
查询参数部分,传递一些请求参数,也叫查询字符串数据 |
(2) HTTP协议之请求报文
浏览器在发送http请求的过程中,其实给对应Web服务端发送的是HTTP请求报文,其具体协议格式如下:
下面是一个客户端请求时发送的HTTP请求报文:
GET /annual/2019?source=navigation HTTP/1.1\r\n
Host: movie.douban.com
Connection: keep-alive\r\n
Pragma: no-cache\r\n
Cache-Control: no-cache\r\n
Upgrade-Insecure-Requests: 1\r\n
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6)\r\n
Accept: text/html,application/xhtml+xml,application/xml\r\n
\r\n
一个HTTP请求报文分为以下4个部分:
-
请求行:用来说明请求方式、要访问的资源地址以及所使用的HTTP版本
GET /annual/2019?source=navigation HTTP/1.1\r\n
-
请求头:紧接着请求行之后的部分,用来说明服务器要使用的附加信息
Connection: keep-alive\r\n Pragma: no-cache\r\n Cache-Control: no-cache\r\n Upgrade-Insecure-Requests: 1\r\n User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6)\r\n Accept: text/html,application/xhtml+xml,application/xml\r\n
-
空行:请求头部后面的空行是必须的,即使第四部分的请求数据为空,也必须有空行
\r\n
-
请求体:可选部分,请求时所要向服务端传递的数据,上面的例子中没有请求数据
(3) HTTP协议之响应报文
Web服务端在处理完浏览器的请求之后,给浏览器返回的是HTTP响应报文,其具体协议格式如下:
下面是一个web服务端响应时的HTTP响应报文:
HTTP/1.1 200 OK\r\n
Date: Mon, 14 Sep 2020 07:24:14 GMT\r\n
Content-Type: text/html; charset=utf-8\r\n
Transfer-Encoding: chunked\r\n
Connection: keep-alive\r\n
Keep-Alive: timeout=30\r\n
Vary: Accept-Encoding\r\n
Content-Encoding: gzip\r\n
\r\n
<html>
<head>
...
</head>
<body>
...
</body>
</html>
一个HTTP响应报文分为以下4个部分:
-
响应行:主要包括使用的HTTP协议版本、响应状态码和状态码描述
HTTP/1.1 200 OK\r\n
-
响应头:紧接着响应行之后的部分,用来说明给客户端返回的一些附加信息
Date: Mon, 14 Sep 2020 07:24:14 GMT\r\n Content-Type: text/html; charset=utf-8\r\n Transfer-Encoding: chunked\r\n Connection: keep-alive\r\n Keep-Alive: timeout=30\r\n Vary: Accept-Encoding\r\n Content-Encoding: gzip\r\n
-
空行:响应头部后面的空行是必须的,即使第四部分的响应体数据为空,也必须有空行
\r\n
-
响应体:可选部分,web服务端给客户端返回的响应主体数据
<html> <head> ... </head> <body> ... </body> </html>
1.2 查看HTTP协议的通信过程
学习目标
- 能够使用谷歌浏览器的开发者工具查看HTTP协议的通信过程
1.2.1 谷歌浏览器开发者工具的使用
首先需要安装Google Chrome浏览器,然后Windows和Linux平台按F12调出开发者工具, mac OS选择 视图 -> 开发者 -> 开发者工具或者直接使用 alt+command+i 这个快捷键,还有一个多平台通用的操作就是在网页右击选择检查。
开发者工具的效果图:
开发者工具的标签选项说明: