####Key terms

  • webapp2 application
  • WSGIApplication class
  • router instance
  • RequestHandler class
  • get method
  • post method
  • response instance
  • redirect method

Almost all Python web application frameworks use the Web Server Gateway Interface (or WSGI), which handles the interface between web servers and web applications written in Python.

webapp2 is a simple web application framework that consists of two main parts: a WSGIApplication instance that routes incoming requests and RequestHandler classes that process requests and build responses.

#####The WSGIApplication object

import webapp2

class MainPage(webapp2.RequestHandler):

    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
    self.response.write('Hello, World!')

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

When you import webapp2, your application has access to the class webapp2.WSGIApplication. To create a new aplication you create a new object of that class.

A WSGIApplication object takes as its first argument a list of routes, which are passed to a router instance. Each route is defined by a path and a request handler. The path is the path of the URL that has been requested and the handler defines what happens when that path is requested.

Within an application, handlers are defined by subclassing the RequestHandler class, defined in webapp2, and most importantly by redefining the get and post methods.

All RequestHandlers contain an instance of the Response class, which in turn contains an instance of out, which in turn has a write method–critical for sending a request response:

self.response.write('Hello, world')

Another useful RequestHandler method is redirect, which redirects output to a different path and runs a new handler, as determined by the route mappings.