- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
请求响应循环
其实大家对于HTTP协议应该是再熟悉不过了,它是超文本传输协议,定 义了服务器和客户端之间信息交流的格式和传递方式。
那么对于上面的问题,我们其实也可以大致的说出一个简易流程:
L按下Enter之后,浏览器会向URL地址发送一个HTTP请求
2.在浏览器的背后,有一个后台程序,用于接收相关请求,并返回处理的结果 3?浏览器接收结果,并渲染给终端用户查看
事实上,每一个Web应用都包含这种处理模式,即“请求?响应循环
(Request-Response Cycle) ”:客户端(浏览器等)发出请求,服务端处理请求 并响应。
我们再把上面的流程扩展到Flask服务器上,就是山浏览器生成的HTTP 请求发送至Web服务器。Web服务器接收到请求后,经山WSGI协议把数据转 换成Flask程序能够识别的数据后,传递给Fbsk程序。然后Rask程序再根据 视图函数等处理相关请求,最后再返回响应给Web服务器。最终交由浏览器来 渲染结果,比如加载CSS,执行JavaScript代码等等操作。
我们可以看下下面的图片
II ri p
服务器端
w服务器数据库
w服务器
数据库
WS(;I
WS(;I
Flask 程序
form
form 表单数据
这里有两个概念我们要先明确下
Web服务器:Web服务器是一类特殊的服务器,其作用是主要是接收 HTTP请求并返回响应。我们常用的Web服务器有Nginx, tomcat等,相信大 家都非常熟悉或多少听说些。
WSGI:它确切来说应该是一种协议,或者接口规范。定义了 web服务器 和web应用(Flask等)之间的接口规范。只有Web服务器和Web应用都遵守 了 WSGI协议,那么他们才能正常通信。
比如说在上一节我们使用app.runO启动测试服务器时,就是使用了 Flask 自带的Web服务器,当然这种服务器只能用来开发测试时使用,在生成环境, 我们需要部署到Nginx等Web服务器上。
Flask上下文HTTP请求当Fbsk
Flask上下文
HTTP请求
当Fbsk接收到客户端的请求后(后面的章节中我们都会直接省略Web服 务器和WSGI的转换步骤),就会产生一些视图函数可以访问的对象,通过这 些对象来处理请求,这就是请求对象-requestO
request对象包含了 HTTP请求中的URL信息和相关的报文信息 URL信息
例如请求URL为:
属性
值
path
/hello
fulLpath
7heHo?naine= xxxxx
host
xxx.xxxxxxxxi.t op
host_url
?xxxx://xxx?xxxxxxxx?t op*
base_url
?xxxx://www?xxxxxx?t op /hello
url
xxxx://xxx.xxxxxxxi.xxx/hello?name=xxxxx
xxxx://xxx?xxxxxxxi?xxx/hello?name=xxxxx
报文信息
说明属性或方法
说明
argscookies查询字符串信息
args
cookies
cookies信息字典
data字符串形式的请求数据
data
字符串形式的请求数据
属性或方法
说明
getJsonO
获取json类型的请求数据
method
请求的HTTP方法
下面我们通过一个简单的例子来具体査看下
@ap p.route(ytestf)
def test_view():
query = Flask
if request.args:
query = request.args.get(name\ Flask?
host = requestJiost
path = request.full _p ath
cookie = requestxookies
method = request.method
return *
hl
vpquery string: %s/p
phost: %sZp
vpApath: %s/p
pxookies: %s/p
pmethod: %s/p
/hl
z % (query, host, pdth. cookie, method)
当我们在浏览器输入;xxxx://xxx?0?0?l:5000/testA 可以得到 query string: Flask
path: /test/?
cookies: {session*: *.eJwlzjEOwzAIAMC_MGcAjLHJZyJsg9o1aaaqf2 lrjfdG44843rAjrv2OB4LtjBhMKWt5msbVBgrKJB1hcTEc7QLFXaFG c8QfL40UC09.EK pp fg3uAaGLfX7iMgBo-13-PcMtgfd-E}
method: GET
当我们
原创力文档


文档评论(0)