2013-03-15 7 views
5

Sto cercando di utilizzare Flask-Restless con Ember.js che non sta andando molto bene. Sono le risposte GET a farmi inciampare. Per esempio, quando faccio una richiesta GET su /api/people ad esempio Ember.js aspetta:Modifica risposta JSON di Flask-Restless

{ 
    people: [ 
     { id: 1, name: "Yehuda Katz" } 
    ] 
} 

Ma Flask-Restless risponde con:

{ 
    "total_pages": 1, 
    "objects": [ 
     { "id": 1, "name": "Yahuda Katz" } 
    ], 
    "num_results": 1, 
    "page": 1 
} 

Come faccio a cambiare la risposta di Flask-Restless di conformarsi alle cosa vorrebbe Ember.js? Ho la sensazione che potrebbe essere in una funzione di postprocessore, ma non sono sicuro di come implementarlo.

+1

Sigh ... Ho provato a porre la domanda inversa e qualcuno ha appena detto che dovrei cambiare il modo in cui Flask-Restless risponde. TBH Sono molto più a mio agio con Python, quindi farlo in questo modo mi fa piacere. –

risposta

3

La risposta accettata era corretta al momento. Tuttavia, il post e i preprocessori funzionano in Flask-Restless sono cambiati. According to the documentation:

I preprocessori e post-processor per ogni tipo di richiesta di accettare argomenti diversi, ma nessuno di loro ha un valore di ritorno (più specificamente, qualsiasi valore restituito viene ignorato). I preprocessori e i postprocessori modificano i loro argomenti sul posto.

Così ora nel mio postprocessore ho appena eliminato tutte le chiavi che non voglio. Ad esempio:

8

Le estensioni del matraccio hanno pretty readable source code. È possibile effettuare una GET_MANY postprocessore:

def pagination_remover(results): 
    return {'people': results['objects']} if 'page' in results else results 

manager.create_api(
    ..., 
    postprocessors={ 
     'GET_MANY': [pagination_remover] 
    } 
) 

non ho ancora testato, ma dovrebbe funzionare.

+1

Sono davvero imbarazzato che fosse così semplice, ma grazie mille. –

+0

Ho provato questo e non lo fece. – bbaassssiiee

+2

@datasmid: non è affatto utile. – Blender