2013-10-30 12 views
7

Come ottengo i dati dalla mia richiesta POST angolare in Google App Engine WebApp2? self.request.body restituisce una stringa e self.request.get(key) non restituisce nulla.Come analizzare una richiesta POST angolare in WebApp2

Il codice angolare che presenta il POST è:

$http.post("/mail", {request_name: 'Test Name', request_body: 'Test Body'}); 

Poi queste due righe nel mio gestore WebApp2:

print "1: " + self.request.body 
print "2: " + self.request.get('request_name') 

Stampa questa:

1: {"request_name":"Test Name","request_body":"Test Body"} 
2: 

Qual è la migliore come ottenere dati dal corpo del POST? O dovrei inviare la richiesta in modo diverso?

risposta

18

A giudicare dalla tua prima stampa, sembra che angolare sta inviando i dati in formato JSON. Webapp2 non analizzerà questi dati per te. Per la vostra richiesta particolare, si può fare:

import json 
d = json.loads(self.request.body) 
v = d.get(key) 

Se si vuole essere in grado di accedere ai dati POST utilizzando self.request.POST.get(key), è probabilmente necessario per inviare i dati come dati del modulo. Vedere this SO answer per ulteriori informazioni a riguardo.

0

Uso sempre self.request.get e sono in grado di ottenere i dati dal metodo GET/POST, forse si inviano i dati in formato diverso accessibile solo da self.request.body?

+0

Gli strumenti di sviluppo di Chrome dicono che la richiesta è 'application/json; charset = UTF-8' – benshope

0

Si può provare questo:

self.request.POST.get(key) # POST requests 
self.request.GET.get(key) # GET requests 
Problemi correlati