2009-11-24 5 views
6

Je souhaite créer un service Web RESTFUL qui reçoit une demande via l'URL à laquelle il accède, puis renvoie le document approprié pour ce client. Par exemple, si c'était une application météo et que je voulais obtenir la météo pour Atlanta via un navigateur Web, j'accéderais au http://weatherapp.appspot.com/temperature/Atlanta et il retournerait un document HTML avec les informations pour Atlanta. Je ne veux rien de ce qui se rattache à une base de données, car j'essaie simplement d'envelopper un autre site Web par le biais d'une capture d'écran. Quelqu'un at-il des exemples sur la façon d'obtenir des arguments de l'url?Comment créer un service REST avec Google App Engine et Python?

Répondre

15

Utilisation du cadre webapp, vous pouvez capturer des groupes d'expression réguliers et les transmettre à votre gestionnaire comme ceci:

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() 

Tous les groupes parenthésées dans l'expression régulière sont recueillis et transmis comme arguments de position au get/post/etc méthodes sur votre gestionnaire.

+0

Cela fonctionne bien. Merci! – James

+1

Impossible d'utiliser le fichier app.yaml pour mapper les URL? –

+1

@Chris app.yaml indique à l'infrastructure quel script doit acheminer la requête. Puisque les demandes sont faites en utilisant CGI, il n'y a aucun moyen d'y capturer des sous-groupes. Il appartient toujours au script individuel de router les requêtes vers le gestionnaire approprié, comme ci-dessus. –