Flask 是一种基于 Python 的 Web 框架,它采用了基于视图函数的方式来处理 HTTP 请求和响应。下面是 Flask 的请求流程:
- 创建 Flask 应用
在 Python 中,我们需要导入 Flask 模块并创建一个 Flask 应用对象,例如:
from flask import Flask
app = Flask(__name__)
- 定义路由规则
Flask 使用基于装饰器的方式来定义路由规则。可以使用 route
装饰器来指定路由路径和请求方法,例如:
@app.route('/hello', methods=['GET'])
def hello():
return 'Hello, World!'
这个例子中,我们定义了一个 /hello
的 GET 请求路由,并将其绑定到一个名为 hello
的视图函数上。
- 接收请求
当客户端发送请求到服务器时,Flask 应用会根据路由规则匹配到对应的视图函数,并将请求作为参数传递给视图函数。例如:
@app.route('/user/<username>', methods=['GET'])
def show_user_profile(username):
return f'User {username}'
这个例子中,我们定义了一个 /user/<username>
的 GET 请求路由,并从路由参数中获取用户名。
- 处理请求
在视图函数中,可以访问和操作请求相关的数据,例如请求参数、头信息和 Cookie 等。例如:
from flask import request
@app.route('/login', methods=['POST'])
def login():
username = request.form['username']
password = request.form['password']
# ...
这个例子中,我们定义了一个 /login
的 POST 请求路由,并从表单参数中获取用户名和密码。
- 发送响应
视图函数最终需要向客户端发送 HTTP 响应。可以使用 Flask 提供的特殊对象 Response
来设置响应状态码、消息体、头信息等。例如:
from flask import Response
@app.route('/ping', methods=['GET'])
def ping():
return Response('pong', status=200, content_type='text/plain')
这个例子中,我们定义了一个 /ping
的 GET 请求路由,并返回字符串 pong
作为响应消息体。
- 启动服务器
最后,需要通过调用 run()
方法来启动 Flask 应用并监听端口。例如:
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
这个例子中,我们将服务器绑定到本地 5000 端口,并等待客户端连接。
总之,Flask 的请求流程包括创建应用对象、定义路由规则、接收请求、处理请求和发送响应等步骤。使用 Flask 可以很方便地快速构建 Web 应用程序。