2011-04-24 7 views
7

Estoy loco de verde a WSGI en Google App Engine (GAE).WSGI - Establecer el tipo de contenido a JSON

¿Cómo configuro el tipo de contenido en JSON? Esto es lo que tengo hasta ahora:

class Instructions(webapp.RequestHandler): 
    def get(self): 
     response = {} 
     response["message"] = "This is an instruction object" 

     self.response.out.write(json.dumps(response)) 



application = webapp.WSGIApplication([('/instructions', Instructions)], 
            debug=True) 

def main(): 
    run_wsgi_app(application) 

if __name__ == "__main__": 
    main() 

Además, estoy creando algunos servicios RESTful, nada demasiado complicado. Estaba usando reposeras cuando estaba desarrollando en JAVA. ¿Hay un mejor marco para usar que WSGI? La única razón por la que estoy usando WSGI es porque eso es lo que usaron en el tutorial de App Engine.

Gracias!

+2

¿Estás "verde loco"? Escuché que no es fácil. –

+0

Hola Nick, así que traté de escribirte un gracias no hace mucho por una de las preguntas que tuve que respondiste, pero por mi vida no pude encontrar tu dirección de correo electrónico –

Respuesta

14

Puede establecer el correcto Content-Type con algo como esto:

self.response.headers['Content-Type'] = "application/json" 
self.response.out.write(json.dumps(response)) 

WSGI no es un marco, pero una especificación; el marco que está utilizando actualmente es el marco webapp.

No hay nada sofisticado y específico como Restlet en el lado de Python; sin embargo, con la aplicación web puede crear RESTful request handlers a través de expresiones regulares que devuelven datos JSON/XML como lo hace su manejador.

+0

Genial, gracias por respondiendo mi pregunta sobre las cosas de REST –

2

Como cualquier respuesta HTTP, puede agregar o editar encabezados:

def get(self): 
    response = {} 
    response["message"] = "This is an instruction object" 

    self.response.headers["Content-Type"] = "application/json" 
    self.response.out.write(json.dumps(response)) 

Más aquí: Redirects, Headers and Status Codes

1

¿Existe un marco mejor estar usando que WSGI?

Mira Pirámide (anteriormente denominado torres de alta tensión, si ves que se menciona). Parece que sería mejor en tu caso vs django.

Cuestiones relacionadas