【问题标题】:Flask, how to jsonify ONLY when return to browserFlask,仅在返回浏览器时如何进行 jsonify
【发布时间】:2016-01-29 07:25:12
【问题描述】:

我尝试用Flask搭建一个RESTful的api服务器,并创建了一些可以将JSON格式数据返回给浏览器的函数。

现在我希望让代码更可重用,例如:

@simple_page.route('/raw_data')
def raw_data():
    # to json
    pass


@simple_page.route('/score')
def score():
    data = raw_data()
    # some calculation & return the score (to json)
    pass

如果在 Flask 中函数 raw_data() 返回 json 格式结果 if and only if 是否有任何方法将结果发送回浏览器? (像@cherrypy.tools.json_out() 在cherrypy 中所做的)

提前致谢。

【问题讨论】:

    标签: python json flask cherrypy


    【解决方案1】:

    raw_data() 分解成一个单独的 函数,被两条路线重用:

    def _produce_raw_data():
        return raw_data
    
    @simple_page.route('/raw_data')
    def raw_data():
        return jsonify(_produce_raw_data())
    
    
    @simple_page.route('/score')
    def score():
        data = _produce_raw_data()
        # some calculation & return the score (to json)
        return jsonify(calculation_results)
    

    【讨论】:

    • 是的,这是一个解决方案。但是当我们有一定数量的函数时,这样的复用会让代码看起来一团糟。
    • 检查raw_data 的调用者看起来会很乱。编写可重用的代码不会。您可以随时将这些功能移至另一个模块。
    猜你喜欢
    • 2021-12-26
    • 1970-01-01
    • 2016-04-06
    • 2017-03-13
    • 1970-01-01
    • 2014-11-26
    • 2020-02-29
    • 2020-07-27
    • 2018-06-06
    相关资源
    最近更新 更多