Python Web开发之响应格式篇

510人浏览 / 0人评论 / 添加收藏

在HTTP响应中,数据可以通过多种格式传输。

不同的响应数据格式需要设置不同的MIME类型,MIME类型在首部的Content-Type字段中定义。

我们以默认的HTML类型为例,Content-Type内容如下:

Content-Type: text/html; charset=utf-8

但是在特定的情况下,也会使用其他格式。我们可以通过Flask提供的make_response()方法生成响应对象,传入响应的主体作为参数,然后使用响应对象的mimetype属性设置MIME类型。

常用的数据格式有纯文本、HTML、XML和JSON,它们对应的MIME类型如下

纯文本:text/plain

HTML: text/html

XML:application/xml

JSON:application/json
 

1、响应格式:text/plain,代码如下:

# run.py
from flask import Flask, make_response
app = Flask(__name__)

@app.route('/index')
def index():
   response = make_response('Hello World')
   response.mimetype = 'text/plain'
   return response

if __name__ == '__main__':
   app.run(debug=True)
运行run.py文件,在浏览器中访问网址127.0.0.1:5000/index,结果如下图所示

2、响应格式:application/json,完整示例代码如下:

# run.py
from flask import Flask, make_response, json
app = Flask(__name__)

@app.route('/index')
def index():
   data = {'name':'Andy', 'age':18}
   # 调用dumps()方法将字典、列表或元组序列化(serialize)为JSON字符串
   response = make_response(json.dumps(data))
   response.mimetype = 'application/json'
   return response

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

运行run.py文件,在浏览器中访问网址127.0.0.1:5000/index,结果如下图所示

3、返回结果json格式化我们也可以使用Flask提供的jsonify()函数,只要传入数据或参数,它会对传入的参数进行序列化,转换成JSON字符串作为响应的主体,然后生成一个响应对象,并且设置正确的MIME类型,代码如下:

# run.py
from flask import Flask, jsonify
app = Flask(__name__)

@app.route('/index')
def index():
   # return jsonify({'name':'Andy', 'age':18})
   return jsonify(name='Andy', age=18)

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

运行run.py文件,在浏览器中访问网址127.0.0.1:5000/index,结果如下图所示:

4、请求参数的json格式化

详细代码如下:

# run.py
from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/')
def index():
   return 'Hello World!'

@app.route('/test', methods=["POST"])
def first_post():
   try:
       my_json = request.get_json()
       print(my_json)
       get_name = my_json.get("name")
       get_age = my_json.get("age")

       if not all([get_name, get_age]):
           return jsonify(msg="缺少参数!!")

       get_age = get_age + 10
       return jsonify(name=get_name, age=get_age)
   except Exception as e:
       print(e)
       return jsonify(msg="提交数据出现错误!!")

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

运行run.py文件,在Postman工具进行如下操作及返回结果如下:

 

 

全部评论