2013-03-15 4 views
5

Ich versuche Flask-Restless mit Ember.js zu verwenden, die nicht so gut geht. Es sind die GET-Antworten, die mich stolpern lassen. Zum Beispiel, wenn ich eine GET Anfrage auf /api/people zum Beispiel tun Ember.js erwartet:Ändern der JSON-Antwort von Flask-Restless

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

Aber Flask-Restless antwortet mit:

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

Wie kann ich Flask-Restless Antwort auf anzupassen Was Ember.js möchte? Ich habe das Gefühl, dass es in einer Postprozessor-Funktion sein könnte, aber ich bin mir nicht sicher, wie ich es implementieren soll.

+1

Seufz ... Ich versuchte die umgekehrte Frage zu stellen und jemand sagte nur, ich sollte ändern, wie Flask-Restless reagiert. TBH Ich fühle mich in Python viel wohler, also macht es mich so. –

Antwort

3

Die angenommene Antwort war zu der Zeit korrekt. Jedoch haben sich die Post- und Präprozessoren in Flask-Restless verändert. According to the documentation:

Die Vorprozessoren und Postprozessoren für jede Art von Anfrage unterschiedliche Argumente annehmen, aber keiner von ihnen hat einen Rückgabewert ( mehr gesagt wird jeder zurückgegebene Wert ignoriert). Präprozessoren und Postprozessoren modifizieren ihre Argumente an Ort und Stelle.

So jetzt in meinem Postprozessor löschen ich einfach alle Schlüssel, die ich nicht will. Zum Beispiel:

def api_post_get_many(result=None, **kw): 
    for key in result.keys(): 
     if key != 'objects': 
      del result[key] 
8

Kolbenverlängerungen haben pretty readable source code. Sie können eine GET_MANY Nachprozessor machen:

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

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

ich es nicht getestet, aber es sollte funktionieren.

+1

Ich bin wirklich peinlich, es war so einfach, aber vielen Dank. –

+0

Ich habe das getestet und es nicht getan. – bbaassssiiee

+2

@datasmid: Das ist überhaupt nicht hilfreich. – Blender

Verwandte Themen