Flask Response

栏目: Python · 发布时间: 6年前

内容简介:flask jsonify()函数返回json响应这时候content-Type=application/json如果用python的json.dumps()函数

flask jsonify()函数返回json响应

app = Flask(__name__)
@app.route('/json/<name>')
def index(name):
    return jsonify({'Hello':name})

这时候content-Type=application/json

如果用 python 的json.dumps()函数

@app.route('/dumps/<name>')
def py(name):
    return json.dumps({'Hello':name})

这时候content-Type=text/html; charset=utf-8。如果选择响应的格式的话,return json.dumps({'Hello':name}),{'Content-Type':'application/json'} 那么content-Type=application/json就会响应json格式

flask Response响应类实际上来自Werzeug中的Response类,它继承的是python的BaseResponse类

我们可以自定义响应

>>> from flask import Flask
>>> app = Flask(__name__)
>>> app.make_response(("<h1>Hello word</h1>",201))
<Response 16 bytes [201 CREATED]>

make_response接收一个参数,返回信息和状态码都在一个元组里

Response类定义:

class Response:
    charset = 'utf-8'
    default_status = 200
    default_mimetype = 'text/html'

    def __init__(self, response=None, status=None, headers=None,
                 mimetype=None, content_type=None, direct_passthrough=False):
        pass

    @classmethod
    def force_type(cls, response, environ=None):
        pass

我们可以自定义Response的子类,对他的行为做出一些改变,Flask类的response_class属性可以改变响应类。

from falsk import FLask, Response

calss MyResponse(Response):
    default_mimetype = 'application/xml'  #修改内容类型
  
class Myfalsk(Flask):
    response_class = Myresponse
    
@app.route('/')
def index():
    return '''<?xml version='1.0'encoding="UTF-8"?>
    <person>
        <name>Yang</name>
    </person>
    '''
如果想要其他的内容类型,可以设置Content-Type的值:
return "{'name':'yang'}",{'Content-Type'='application/json'}

重写Response类来过滤Json格式的内容格式:

class Myresponse(Response):
    @classmethod
    def force_type(cls, response, environ=None):
        if isinstance(response, dict):
            response = jsonify(response)
        return super().force(response, environ)

重写forec_type来自定义对未知返回对象的处理。falsk只知道对字符串和二进制类型进行处理响应,其他位置类型比如字典都通过forec_type函数进行处理,我们定义的如果返回的是dict类型那么用flask的jsonify函数转换成json内容类型。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

超简单!一学就懂的互联网金融

超简单!一学就懂的互联网金融

视觉图文 / 人民邮电出版社 / 2015-2-1 / 45.00元

零基础、全图解,通过130多个精辟的知识点、220多张通俗易懂的逻辑图表,让您一书在手,即可彻底看懂、玩转互联网金融从菜鸟成为达人,从新手成为互联网金融高手! 本书主要特色:最简洁的版式+最直观的图解+最实用的内容。 本书细节特色:10章专题内容详解+80多个特别提醒奉献+130多个知识点讲解+220多张图片全程图解,深度剖析互联网金融的精华之处,帮助读者在最短的时间内掌握互联网金融知......一起来看看 《超简单!一学就懂的互联网金融》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

SHA 加密
SHA 加密

SHA 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具