zoukankan      html  css  js  c++  java
  • 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的返回类设置为自定义的返回类
  • 相关阅读:
    STL 源代码剖析 算法 stl_numeric.h -- copy
    SQLServer 复制和数据库镜像 具体配置部署
    2016第23周三
    2016第23周二
    2016第23周一
    2016第22周日
    2016第22周六
    2016第22周五
    五个JS经典面试题
    2016第22周三
  • 原文地址:https://www.cnblogs.com/ivy-blogs/p/11503453.html
Copyright © 2011-2022 走看看