El Framework Webapp2 en Google App Engine

Google App engine para Python utiliza Web Server Gateway Interface(WSGI) como protocolo para la comunicación entre el servidor y la aplicación web, pero utilizar WSGI directamente para programar nuestra aplicación no es la mejor idea, ya que WSGI no esta pensado para montar aplicaciones directamente, más bien a travez de algún framework que soporte WSGI como Django, CherryPy, Pylons, web.py, y web2py. Para usar dichos frameworks tan solo basta con copiar su código fuente a la carpeta de nuestra aplicación y construir nuestra app sobre ellos.

El caso es diferente para Webapp2, ya que App Engine lo tiene instalado de fabrica, esto significa que no tenemos que bajarnos y copiar Webapp2 a nuestra aplicación, todas sus clases y dependencias las podemos usar directamente pues viene incluido también en el SDK.

Componentes de Webapp2

Una aplicación de Webapp2 se conforma de dos partes:

  1. Una o mas clases controladores de tipo RequestHandler que procesan las peticiones y generan una respuesta.
  2. Una instancia de WSGIApplication que mapea las peticiones a los controladores en base a URLS
import webapp2
 
class MainPage(webapp2.RequestHandler):
    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.write('!Hola, Mundo!')
 
app = webapp2.WSGIApplication([
    ('/', MainPage),
], debug=True)

Usando de ejemplo el código de “Hola Mundo” lo primero que hay que hacer es importar webapp2, que como ya se menciono viene incluido en App Engine, por lo que solo tenemos que escribir import webapp2

La clase MainPage de nuestro código hereda de webapp2.RequestHandler para que se convierta en un controlador valido, de esta forma tendremos disponibles los siguientes métodos:

  • get()
  • post()
  • head()
  • options()
  • put()
  • delete()
  • trace()

Cada método representa un verbo de http, por lo tanto, deberemos sobre-escribir cada función de acuerdo a lo que necesitemos. Para mostrar código html lo más común es que usemos get, y para recibir un formulario lo más común es que lo hagamos por post, pero esto ya queda a juicio del programador, lo importante aquí es entender de que si la petición HTTP es del tipo GET, se ejecutará la función get(), y si es del tipo POST se ejecutará la función post(), y así para cada caso.

Recibir parámetros y escribir respuestas

Para recibir cualquier parámetro en la petición tenemos disponible self.request.get() de la clase RequestHandler, de tal forma de que si queremos recibir un parámetro llamado fecha tan solo basta llamar self.request.get(“fecha”) para obtener el valor.

Como se puede ver en el código superior, para escribir la respuesta de la petición, tenemos que hacerlo a travez del método self.response.write()

Iniciar la aplicación

app = webapp2.WSGIApplication([
    ('/', MainPage),
], debug=True)

webapp2.WSGIApplication(rutas, debug) es el método de webapp2 que se usa para registrar e iniciar una aplicación web. Como primer parámetro recibe un arreglo de objetos indicando la url y el controlador asociado a dicha url, otro parámetro es la bandera de debug, que muestra información util en caso de error; cuando la aplicación esta en productivo lo correcto es cambiar la bandera de debug a False para no exponer nuestro código a los usuarios, en casa de falla solo verán un error 500.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *