8 Flask 请求与响应实战

8 Flask 请求与响应实战

Flask 是一个轻量级的 Python web 框架,处理 HTTP 请求和响应是其核心功能之一。本节将通过实例帮助你理解如何在 Flask 中处理请求和发送响应。

请求 (Request)

在 Flask 中,request 对象用于获取客户端发送的请求信息,如 URL、表单数据和请求头等。

获取请求数据

Flask 提供了多种方法来获取请求中的数据。

获取查询参数

查询参数通常包含在 URL 中,例如 /search?q=flask

1
2
3
4
5
6
7
8
9
10
11
from flask import Flask, request

app = Flask(__name__)

@app.route('/search')
def search():
query = request.args.get('q') # 获取查询参数 'q'
return f'You searched for: {query}'

if __name__ == '__main__':
app.run(debug=True)

在这个例子中,当访问 /search?q=flask 时,Flask 会返回 You searched for: flask

获取表单数据

使用 POST 方法提交的表单数据可以通过 request.form 访问。

1
2
3
4
5
6
7
8
9
10
11
from flask import Flask, request

app = Flask(__name__)

@app.route('/submit', methods=['POST'])
def submit():
username = request.form.get('username')
return f'Hello, {username}!'

if __name__ == '__main__':
app.run(debug=True)

在 HTML 表单提交时,Flask 会提取 username 字段的值。

获取请求头

请求头包含有关请求的元数据,如用户代理、内容类型等。

1
2
3
4
@app.route('/headers')
def headers():
user_agent = request.headers.get('User-Agent')
return f'Your User-Agent is: {user_agent}'

使用浏览器访问 /headers 可以查看你当前的用户代理。

响应 (Response)

Flask 的 response 对象用于构建服务器端响应。

基本响应

最简单的响应是直接返回一个字符串。

1
2
3
@app.route('/hello')
def hello():
return 'Hello, World!'

使用 Response 对象

你可以创建一个更复杂的响应对象,通过 Flask 的 Response 类。

1
2
3
4
5
6
from flask import Response

@app.route('/json')
def json_response():
data = {'message': 'Hello, JSON!'}
return Response(response=json.dumps(data), status=200, mimetype='application/json')

这里我们返回的是 JSON 格式的数据,并指定了 mimetype

设置响应头

你可以通过 response.headers 设置自定义的响应头。

1
2
3
4
5
@app.route('/custom-header')
def custom_header():
response = Response('Check your headers!')
response.headers['X-Custom-Header'] = 'This is a custom header'
return response

状态码

你可以通过返回一个元组来指定状态码和响应内容。

1
2
3
@app.route('/status')
def status():
return 'Resource created', 201 # 201 Created 状态码

处理错误响应

你可以使用 abort 函数来返回错误代码。

1
2
3
4
5
from flask import abort

@app.route('/error')
def error():
abort(404) # 返回404 Not Found错误

通过这些基本的请求和响应操作,你可以开始处理客户端的请求并返回定制的响应。在后续的学习中,可以结合更复杂的路由和数据处理,进一步提升你对 Flask 的掌握。

8 Flask 请求与响应实战

https://zglg.work/flask/8/

作者

AI教程网

发布于

2024-08-08

更新于

2024-08-10

许可协议