作者:俞坤
原文:https://www.yukunweb.com/2018/2/understand-python-web/
因为 代码的优雅美观且易于维护这一特点,越来越多的人选择使用 做Web开发。而 的 框架百花齐放,目前比较流行的框架有大包大揽的 ,小巧灵活的 、 ,还有性能高效的异步框架 、 。这么多框架只要选择一个,阅读他的文档,就可以很轻松的搭建一个 ,完全不需要去管他实现的原理。
本篇文章意在对一个web开发做一个梳理。
前端网页三剑客
我们打开浏览器输入一个网址 ,然后就看到了浏览器给我们显示的页面,这个时候打开浏览器开发者工具,点击 ,刷新页面,会看到下方的请求的 ,点击 ,就可以看到服务器返回给浏览器的 文件信息了。如果复制 响应的内容,保存为 并且在浏览器打开,依然可以看到首页的内容,但是似乎缺少了一些页面的样式和功能。
这是因为当浏览器接收到首页的 源码后,它会根据 的规则去显示页面,然后再根据 里的链接,自动发送HTTP请求给服务器,拿到相应的图片,和 、 等资源,最终显示出一个完整的页面。所以我们会在 下面能看到很多额外的以 , 等后缀的请求了。
其实我们看到的页面就是浏览器按照 的规则,展示给我们的。 告诉浏览器那里是导航,那里是主栏,那里是侧栏。而这些信息如何显示,或者是显示的样式,就是 文件的功劳。至于比如导航的下拉隐藏上拉显示就是 的作用。
如果想要做Web开发,就一定得熟悉 、 、 三剑客的知识,这里推荐W3school的前端教程,也是我学习前端的地方:W3school
客户端和服务器通信
理解了前段三剑客,就知道如何去写一个网页。那么从我们在浏览器的地址栏输入 ,到 页面呈现出来到底经历了什么。
如图,一般这种通过发送请求获取服务器资源的Web浏览器,都可以称为客户端(client)。首先发送一个请求(request)给服务器,大多是以GET请求方式访问,服务器接收到你的请求,然后取到请求的资源,返回给客户端。
服务器和客户端之间交流是怎么进行的呢,服务器是怎么理解客户端的请求的呢。这里就需要一种协议规范,就是HTTP(HyperText Transfer Protocol,超文本传输协议)。可以说, 是建立在 协议上通信的。
如图,仍然是之前的例子,打开浏览器访问 ,打开浏览器开发者工具,点击图中标记的选项卡(记得点view parsed),可以看到客户端发给服务器的请求头前两行。
第一行开头的GET表示请求访问服务器的类型,称为方法(method)。随后的字符 指明了请求访问的资源对象,即请求URI。最后的 ,即HTTP的版本号,用来提示客户端使用的 协议功能。
综上所述,第一行请求内容的意思是:请求访问某台 服务器上的 (首页)页面资源。所以第二行的 表示请求的域名也就是服务器所在地址。
如图,如果是 请求的话,不仅会有请求头部信息,还有一个 的请求实体内容。
接收到请求的服务器呢,他会将请求内容的处理结果以响应的形式返回,看图中的第一行:
开头的部分仍然是服务器对应的 版本,紧接着的 表示请求的处理结果的状态码 (status code) 和原因短语。 状态码就表示响应成功,常见的 表示访问错误, 表示服务器响应错误。这里的 是没有固定的规则的,你也可以让他返回 啥的。
下一行是服务器信息,本站用的是 服务器,在下一行显示了创建响应的日期时间。在下一行的 表示内容的类型,客户端会依赖他判断响应的内容是网页还是音频,图片等类型。
领取专属 10元无门槛券
私享最新 技术干货