2015-10-29 2 views
0

Я пытаюсь создать сервер api RESTful с Flask и создать некоторые функции, которые могут возвращать данные формата JSON в браузер.Flask, как jsonify ТОЛЬКО при возврате в браузер

Теперь я надеюсь сделать код более пригодным для повторного использования, например:

@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 

Если есть какой-нибудь способ в термосе, что функция raw_data() возвращает JSON результата в формате if and only if результат будет отправлена ​​обратно в браузер? (Что-то вроде @cherrypy.tools.json_out() делает в cherrypy)

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

ответ

2

фактор из производства 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) 
+0

Да, это решение. Но когда у нас есть определенное количество функций, такое повторное использование сделает код похожим на беспорядок. – twds

+0

Проверка для вызывающего пользователя 'raw_data' будет выглядеть как беспорядок. Написание кода многократного использования не будет. Вы всегда можете перенести эти функции на другой модуль. – dirn

Смежные вопросы