Skip to content

请求与响应

在视图编写中需要读取客户端请求携带的数据时,如何才能正确的取出数据呢?

请求携带的数据可能出现在 HTTP 报文中的不同位置,需要使用不同的方法来获取参数。

请求响应循环

当我们在浏览器中的地址栏中输入个 URL ,然后按下 Enter 时,稍等⽚刻,浏览器会显示一个问候页面。这背后到底发生了什么?

事实上,每一个 Web 应用都包含这种处理模式,即 请求-响应循环(Request- Response Cycle):客户端发出请求,服务器端处理请求并返回响应,如图所示。

客户端(Client Side)是指用来提供给用户的与服务器通信的各种软件。客户端通常指 Web 浏览器,比如 Chrome、Firefox、IE 等;服务器端(Server Side)则指为用户提供服务的服务器,也是我们的程序运行的地方。

Flask 程序工作的实际流程如下图所示,HTTP 在整个流程中起到了至关重要的作用,它是客户端和服务器端之间沟通的桥梁。

当用户访问一个 URL 的整个流程

  1. 浏览器便生成对应的 HTTP 请求,经由互联网发送到对应的 Web 服务器。
  2. Web 服务器接收请求,通过 WSGI 将 HTTP 格式的请求数据转换成我们的 Flask 程序能够使用的 Python 数据。在程序中,Flask 根据请求的 URL 执行对应的视图函数,获取返回值生成响应。
  3. 响应依次经过 WSGI 转换生成 HTTP 响应,再经由 Web 服务器传递,最终被发出请求的客户端接收。
  4. 浏览器渲染响应中包含的 HTML 和 CSS 代码,并执行 JavaScript 代码,最终把解析后的页面呈现在用户浏览器的窗口中。

完整的 HTTP 流程