2009-11-24 6 views
6

Quiero crear un servicio web RESTFUL que obtiene una solicitud a través de la URL a la que se accede y luego devuelve el documento apropiado para ese cliente. Por ejemplo, si fuera una aplicación meteorológica y quisiera obtener el clima para Atlanta a través de un navegador web, accedería al http://weatherapp.appspot.com/temperature/Atlanta y devolvería un documento HTML con la información de Atlanta. No quiero nada que se vincule a una base de datos, ya que estoy tratando de envolver otro sitio a través de raspado de pantalla. ¿Alguien tiene algún ejemplo sobre cómo obtener argumentos de la url?¿Cómo crear un servicio REST con Google App Engine y Python?

Respuesta

15

Utilizando el marco de aplicación web, puede capturar grupos de expresiones regulares y pasarlos al controlador de la siguiente manera:

class WeatherHandler(webapp.RequestHandler): 
    def get(self, location): 
    # Do something for location 

application = webapp.WSGIApplication([ 
    ('/temperature/(.*)', WeatherHandler), 
]) 

def main(): 
    run_wsgi_app(application) 

if __name__ == "__main__": 
    main() 

Cualquiera de los grupos entre paréntesis en la expresión regular se recogen y se pasa como argumentos posicionales en el GET/POST/etc métodos en su controlador.

+0

Eso funciona bien. ¡Gracias! – James

+1

¿No podría usar el archivo app.yaml para asignar las URL? –

+1

@Chris app.yaml indica a la infraestructura qué secuencia de comandos debe enrutar la solicitud. Dado que las solicitudes se realizan mediante CGI, no hay forma de capturar subgrupos allí. Depende de la secuencia de comandos individual enrutar las solicitudes al controlador adecuado, como se indicó anteriormente. –