HTTP响应
- 视图函数返回的内容即为响应报文中的主题内容。
- 当关闭调试模式时,即FLAK_ENV使用默认值production,如果程序出错,Flask会自动返回500错误响应,而在调试模式下则会显示调试信息和错误堆栈。
- 如果想手动返回错误响应,更方便的方法是使用Flask提供的abort函数。
响应格式
- 不同的响应数据格式需要设置不同的MIME类型,MIME类型在首部的Content-Type字段中定义
- MIMIE类型是一种用来识别文件类型的机制,它与文件扩展名相对应,可以让客户端区分不同的文件类型,并执行不同的操作。
- MIME格式:“类型名/子类型名”;
- 使用Flask提供的make_response(响应主体)方法生成响应对象,设置响应对象的mimetype属性以设置MIME类型;
- response.headers["Content-Type"]='text/xml'; charset=utf-8也可以设置MIME类型。但是用mimetype不需要设置字符集选项。
常见的数据格式
- 纯文本 text/plain
- HTML text/html,最常用的数据格式,也是Flask返回响应的默认数据类型。
- XML application/xml,HTML中的标签用于显示内容,XML中的标签用于定义数据。xml一般作为AJAX请求的响应格式,或者是WEB api的响应格式。
- JSON application/json
JSON响应
- JSON的结构基于“键值对的集合”和“有序值列表”,这2中数据结果类似Python中的字典和列表。
- Flask通过引入标准库中的json模块为程序提供了json支持,因此可以导入json对象,然后调用dumps方法将字典,列表或元组序列化为json字符串,再使用mimetype修改MIME类型返回JSON响应。
- Flask提供的jsonify()函数包装了json的dumps和load()方法,会对我们传入的参数(传入普通参数或关键字参数)
- 进行序列化,转换成JSON字符串,然后生成一个响应对象,并设置正确的MIME类型。
- Flask在获取请求中的json数据:request.json属性/request.get_json()方法。
来一块Cookie
- HTTP是无状态协议。也就是说在一次请求响应结束后,服务器不会留下任何关于对方状态的信息。
- Cookie技术通过在请求和响应报文中添加Cookie数据来保存客户端的状态信息。
- 在Flask中如果想在响应中添加一个cookie,最方便的方法是使用Response类提供的set_cookie()方法。
- set_cookie视图会在生成的响应报文首部中创建一个Set-Cookie字段,即“Set-Cookie: key1=value1;key2=value2;...”
- 当浏览器保存了服务器端设置的cookie后,浏览器再次发送该服务器的请求会自动携带设置的cookie信息,cookie信息存储在请求首部设置的Cookie字段中。
- 从cookie中获取值:request.cookies.get("key", "default_value")
Response类的常用属性和方法
- headers 一个Werkzeug的Headers对象,表示响应首部,可以像字典一样操作;
- status 状态码,文本类型
- status_code 状态码,整型
- mimetype MIME类型
- set_cookie() 用来设置一个cookie
session:安全的Cooki