HTTP in Flask
来源:互联网 发布:java webservice教程 编辑:程序博客网 时间:2024/04/28 15:27
再从宏观上看一下flask应用启动的过程。
先记住,HTTP是一个客户端和服务器端请求和应答的协议标准。
首先,在浏览器中输入要访问的网址,到浏览器显示内容,大概经历了以下过程:
浏览器发送请求到服务器 —> 服务器处理请求 —> 将处理结果作为响应发送给浏览器 —> 浏览器显示响应。
1 首先,浏览器发送一个HTTP请求。
比如,直接在浏览器中访问 http://127.0.0.1:5000/,(127.0.0.1:5000
是本机IP
地址,这里没有本地服务器,自然连接不到服务器,也没有收到响应)。
在浏览器中按F12
键 → Network
→ F5
刷新 → 点击左侧的127.0.0.1
请求 → 右侧Headers
中有相关的请求信息(和网页中显示的一致,没有响应信息)。
- 对应的头部信息也很少:
Request URL
:请求的URL 地址,要访问的网址。User-Agent
: 请求头信息。
2 服务器收到请求,生成一个HTML文档。
这里就是WSGI
处理请求的过程,上篇笔记有详细处理过程。这里复习一下
from flask import Flaskapp = Flask(__name__)@app.route("/")def index(): return "2017-08-21"if __name__ == '__main__': app.run(debug=True)
在命令行运行flaskapp
,会创建一个本地服务器,并将flaskapp
信息传到本地服务器:
-
app = Flask(__name__)
实例化一个app
应用。 - 运行
@app.route("/")
时添加了'/'
到'index()'
函数的映射关系(运行run
方法时这个这个映射关系也会传到WSGI server
中 。 run
方法运行时建立了本地服务器WSGI server
。- 处理一个请求是在
wsgi_app
中进行的。 - 具体处理过程不看,
wsgi_app
会根据客户端请求的URL
匹配app
应用中的URL
,返回app
应用中的URL
对应的视图函数(index()
)中的内容,然后将视图函数的返回内容变成真正的响应(HTTP文档)。
这时候在浏览器中访问 http://127.0.0.1:5000/:
3 服务器将 HTML 文档作为HTTP响应发送给浏览器;
4 浏览器收到响应,从HTTP body 取出HTML 文档并显示。
浏览器中不光有了请求头部信息,也有了响应头部信息:
先在命令行看 WSGI server
:
最后一行是请求发生之后的变化:
127.0.0.1
是当前请求- 接着是请求发生的时间
GET
表示一个读取请求,将从服务器获得网页数据(前面建立了/
和index()
的映射关系。GET /
这里获取视图函数index()
的内容)。HTTP/1.1
为使用的HTTP
协议的版本200
为HTTP
状态码,表示处理成功
浏览器中记录了更详细的信息:
首先,Headers
中的General
:
Request URL
为请求的URL
地址,即要访问的网页地址。Request Method
为请求方法,GET
表示一个读取请求,将从服务器获得网页数据。Status Code
为HTTP
状态码,200 OK
表示成功。Remote Address
为远程地址,127.0.0.1:5000
是本机的IP
地址。Referrer Policy:no-referrer-when-downgrade
仅当发生协议降级(如 HTTPS 页面引入 HTTP 资源,从 HTTPS 页面跳到 HTTP 等)时不发送 Referrer 信息。
然后,Response Headers
:
Content-Length
,10
即响应内容2017-08-21
的长度。Content-Type
表示响应内容的格式,这里的text/html
表示HTML
网页。(浏览器就是依靠Content-Type
来判断响应的内容是网页还是图片,是视频还是音乐。浏览器并不靠URL来判断响应的内容,所以,即使URL是http://example.com/abc.jpg,它也不一定就是图片。)Date :Fri, 25 Aug 2017 10:06:11 GMT
表示响应的时间,GMT
为格林尼治标准时间,一般指世界时。Server:Werkzeug/0.12.2 Python/3.6.1
记录了服务器信息,即前面运行flask
应用时创建的WSGI server
最后,Request Headers
:
- 重要的是这个
Host
,这里就是localhost
,127.0.0.1:5000
Response
中记录了响应内容信息:
和网页显示的内容对应:
以上,完成了浏览器发送请求到服务器 —— 服务器处理请求 —— 将处理结果作为响应发送给浏览器 —— 浏览器显示响应的过程。
阅读全文
0 0
- HTTP in Flask
- 【Flask】HTTP的异常
- WSGI in Flask
- WSGI in Flask --2
- python flask http 接口开发
- Templates in Flask & MVC pattern
- Python Flask http框架详解和示例
- flask快速搭建tensorflow http服务
- [Python]Test Driven Development in Flask application
- flask
- flask
- Flask
- Flask
- flask
- flask
- Flask
- Flask
- flask
- IO流,关于File类的一些;以及输入输出流 整理
- Ubuntu16.04 下Matlab2014a安装教程
- 【数据结构和算法】Day 3
- html常用标签
- linux centos 编译Lua5.2.0 静态库 动态库
- HTTP in Flask
- 直接插入排序的最简单实现
- 在世界五百强实习,是一种怎样的体验?
- 技术的变革
- jemter使用过程中的知识总结
- 2-3 序列求和
- 语料库资源
- Bootstrap学习方法及案例分享
- git命令使用