问:在falsk框架中request是怎么获取到的
答:Flask 通过 python 的上下文概念,在程序内维护了一个请求上下文栈和一个应用上下文栈,栈顶元素保存了处理当前活跃请求的上下文和程序实例。
当一个客户端发出一个请求到 Flask 服务器时,服务器会创建对应的 Request 对象(其中保存了请求中包含的所有数据)和对应的应用上下文对象,并将这两个上下文推送(push)到对应的栈中。Flask 在展现给开发者的 API 中将 Request 对象隐藏起来,通过 flask.request 代理对象让开发者可以直接进行访问。同时在栈中保留了对应的上下文,使得不同请求的上下文不会相互干扰。
等到请求处理完毕,服务器将返回的 Response 发送回客户端后,Flask 将当前请求的上下文从栈顶弹出(pop),同时销毁这个上下文。
简单的来说,每次客户端请求都会创建一个全新的 Request 对象,并通过上下文机制使得可以在当前请求内的任何地方对其进行访问。
你可以通过 flask.request 来使用它,如 request.args,request.form,request.get_json() 等等。