这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天
这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天
服务端网页编程
动态网页——服务器端编程这主题是一系列的模块来演示如何创建动态的网页;可以交付自定义的信息来回应 HTTP 请求的网页。这些模块为服务器端编程提供了一个通用的介绍,以及如何使用 Django (Python) 和 Express (Node.js/JavaScript) 去创建基础应用的具体的入门指导。
大多数的主流网页使用一类服务器端的技术去动态地显示所要求的不同数据。举个例子,想象一下 Amazon 上有多少可购买的产品,以及 FaceBook 上有多少帖子?用完全不同的静态页面去显示所有的这些内容会彻底地低效,所以取而代之的是这些网站展示的是静态的模板(用 HTML, CSS, 和 JavaScript 构建),然后在有需要时动态地在这些模板中更新数据展示。
第一部分分为以下三个主题
- 什么是一个网页服务器
- 我需要什么软件去构建一个网页?
- 你怎样上传文件到一个网页服务器?
1.什么是一个网页服务器
“网络服务器(Web server)”可以代指硬件或软件,或者是它们协同工作的整体。
- 硬件部分,一个网络服务器是一台存储了网络服务软件以及网站的组成文件(比如,HTML 文档、图片、CSS 样式表和 JavaScript 文件)的计算机。它接入到互联网并且支持与其他连接到互联网的设备进行物理数据的交互。
- 软件部分,网络服务器包括控制网络用户如何访问托管文件的几个部分,至少他要是一台 HTTP 服务器。一台 HTTP 服务器是一种能够理解 URL(网络地址)和 HTTP(浏览器用来查看网页的协议)的软件。通过服务器上存储的网站的域名(比如 mozilla.org)可以访问这个服务器,并且他还可以将他的内容分发给最终用户的设备。
基本上,当浏览器需要一个托管在网络服务器上的文件的时候,浏览器通过 HTTP 请求这个文件。当这个请求到达正确的网络服务器(硬件)时,HTTP 服务器(软件)收到这个请求,找到这个被请求的文档(如果这个文档不存在,那么将返回一个 404 响应),并把这个文档通过 HTTP 发送给浏览器。
要发布一个网站,你需要一个静态或动态的服务器。
静态网络服务器(static web server),或者堆栈,由一个计算机(硬件)和一个 HTTP 服务器(软件)组成。我们称它为“静态”是因为这个服务器把它托管文件的“保持原样”地传送到你的浏览器。
动态网络服务器(dynamic web server)由一个静态的网络服务器加上额外的软件组成,最普遍的是一个应用服务器和一个数据库。我们称它为“动态”是因为这个应用服务器会在通过 HTTP 服务器把托管文件传送到你的浏览器之前会对这些托管文件进行更新。
举个例子,要生成你在浏览器中看到的最终网页,应用服务器或许会用一个数据库中的内容填充一个 HTML 模板。网站像 MDN 或者维基百科 [Wikipedia] 有成千上万的网页,但是它们不是真正的 HTML 文档,它们只是少数的 HTML 模板以及一个巨大的数据库。这样的设置让它更快更简单地维护以及分发内容。
2.我需要什么软件去构建一个网页?
要创建和编辑一个网站,你需要一个文本编辑器。文本编辑器创建并修改无格式的文本文件。(其他格式,像是 RTF (en-US) ,允许你去添加格式,像是加粗或者下划线。这些格式并不适用于编写网页。)你应当明智地选择一个文本编辑器,因为当你建立网站时,你会广泛地使用到它。
3.你怎样上传文件到一个网页服务器?
大概思路是在本地IDE上编写对应的网页源码 之后FTP客户端发送到托管网站上
服务器端编程是什么?
Web 浏览器通过超文本传输协议(HTTP)来和 Web 服务器进行通信。当你在网页上点击一个链接,或提交一个表单,再或进行一次搜索时,一个 HTTP 请求就从你的浏览器发送到了目标服务器。
这个请求包括一个标识所请求资源的 URL,一个定义所需操作的方法 (比如获取,删除或者发布资源),还可以包括编码在 URL 参数中的附加信息。附加信息以键值对(参数和它的值)的形式,通过一个查询字符串,作为 POST 数据(由HTTP POST 方法发送)或存放在与之相关联的Cookie中。
Web 服务器等待客户端的请求信息,在它们到达的时候处理它们,并且回复 Web 浏览器一个 HTTP 响应信息。这个响应包含一个表明该请求是否成功的状态行(比如“HTTP/1.1 200 OK”代表请求成功)。
相应一个请求的成功回应包含被请求的资源(比如一个新的 HTML 页面,或者图片等),然后这些会被展示在客户端的 Web 浏览器上。
静态网站
下面这张图展示了一个静态网站的基本架构。(静态网站是指无论何时当一个特定资源被请求的时候都返回相同的被硬编码的内容)当用户想要导航到某个页面时,浏览器会发送一个指定到这个页面的 URL 的 HTTP“GET”请求。服务器从它的文件系统中检索被请求的文件,然后返回一个 HTTP 回应,该回应包括被请求的文件和一个状态码(通常 200 代表操作成功)。如果出于某些原因被请求的文件无法检索到,就会返回错误码。(具体可以参照客户端错误回应和服务器错误回应)
动态网站
动态网站是指,一些响应内容只有在被需要的时候才会生发的网站。在一个动态网站上,页面通常是通过将数据库的数据植入到 HTML 模板中的占位符中而产生的(这是一种比使用静态网站有效得多的存储大量内容的方式)。
动态网站可以基于用户提供的个人信息或者偏好设置来返回不同的数据,并且可以展示作为返回一个回应的内容的一部分的其他操作(比如发送通知)。
大多数支持动态网站的代码必须运行在服务器上。编写这些代码就是所谓的“服务器端编程”(有些时候也称“后端脚本编写”)。
下面的图表展示了一个动态网站的简单架构。就像之前的图表那样,浏览器发送 HTTP 请求给服务器,然后服务器处理请求并且返回合适的 HTTP 响应。
动态网站对于静态资源的请求的处理方式和静态网站是一样的(静态资源是指那些不会改变的文件——最典型的就是:CSS,Javascript,图片,预先生成的 PDF 文件等)。
对于动态资源的请求则会指向(2)服务器端代码 (在图中显示为 Web Application(Web 应用))。在处理“动态请求”时,服务器会首先解释请求,从数据库中读取被请求的信息,然后将这些被检索的信息组合到 HTML 模板中(4),最后返回一个包含所生成的 HTML 页面的回应(5,6)。
WEB框架
服务器端框架 (亦称 "web 应用框架") 使编写、维护和扩展 web 应用更加容易。它们提供工具和库来实现简单、常见的开发任务,包括 路由处理,数据库交互,会话支持和用户验证,格式化输出 (e.g. HTML, JSON, XML), 提高安全性应对网络攻击。
参考材料:
码风略丑 读者见谅 --2023/2/14