• flask-response


    flask-response


    • 关于响应:
      • 视图函数的返回值会被自动转换成一个响应对象,flask的转换逻辑如下:
        • 如果返回的是一个字符串,那么flask会重新创建一个werkzeug.wrappers.Response的对象,Response将该字符串作为主体,状态码为200, MIME为text/html,然后返回Response
        • 如果返回的是一个元祖,元祖中的数据类型应该是 (response, status, headers). status值会覆盖默认的200的状态码, header可以是一个列表或者字典,作为消息的响应头。
        • 如果返回的是一个Response对象,则直接返回。
        • 如果以上条件都不满足,flask会去调用Response.force_type来尝试转换为一个这样的请求
      •  1 from flask import Flask, Response, jsonify
         2 
         3 app = Flask(__name__)
         4 
         5 
         6 class JsonResponse(Response):
         7     @classmethod
         8     def force_type(cls, response, environ=None):
         9         if isinstance(response, dict):
        10             response = jsonify(response)
        11         return super(JsonResponse, cls).force_type(response, environ)
        12 
        13 
        14 app.response_class = JsonResponse
        15 
        16 
        17 @app.route('/')
        18 def index():
        19     response = Response(response='HELLO', status=200, content_type='text/html;charset=utf-8')
        20     return response
        21 
        22 
        23 @app.route('/json')
        24 def json_test():
        25     return {'hello': 'world'}
        26 
        27 
        28 if __name__ == '__main__':
        29     app.run()
      • flask自定义返回对象类

        • 创建自定义对象类需要继承Response类
        • 当需要返回满足flask原本不支持返回的某种数据类型时,需要重写类方法force_type
        • 然后将处理的response对象让父类的Response来处理
        • 将app的返回类设置为自定义的返回类
  • 相关阅读:
    HashMap深度解析(二)(转)
    HashMap深度解析(一)(转)
    GeoHash核心原理解析(转)
    spring boot 策略模式实践
    Java中CAS详解(转)
    springMVC请求流程详解(转)
    7 vi 编辑器
    Linux 命令行快捷键
    Java
    3 Eclipse 查看不了源码
  • 原文地址:https://www.cnblogs.com/ivy-blogs/p/11503453.html
Copyright © 2020-2023  润新知