Колба, как jsonify ТОЛЬКО при возврате в браузер

Я пытаюсь построить RESTful API-сервер с Flask, и создать некоторые функции, которые могут вернуть 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() делает в вишне)

Заранее спасибо.

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)
Другие вопросы по тегам