2009-11-24 12 views
6

Desidero creare un servizio web RESTFUL che ottenga una richiesta tramite l'URL a cui si accede e quindi restituisca il documento appropriato per quel client. Ad esempio, se si trattava di un'app meteo e volevo ottenere il meteo per Atlanta tramite un browser Web, accederei a http://weatherapp.appspot.com/temperature/Atlanta e restituirei un documento HTML con le informazioni per Atlanta. Non voglio nulla che si colleghi a un database perché sto solo cercando di avvolgere un altro sito web tramite screen-scraping. Qualcuno ha qualche esempio su come ottenere argomenti dall'URL?Come creare un servizio REST con Google App Engine e Python?

risposta

15

Utilizzando il quadro webapp, è possibile catturare i gruppi di espressioni regolari e passarli al gestore in questo modo:

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

Tutti i gruppi tra parentesi in espressioni regolari sono raccolti e passati come argomenti posizionali al get/post/etc metodi sul gestore.

+0

Che funziona bene. Grazie! – James

+1

Non potresti usare il file app.yaml per mappare gli URL? –

+1

@Chris app.yaml istruisce l'infrastruttura su quale script instradare la richiesta. Poiché le richieste vengono eseguite utilizzando CGI, non c'è modo di acquisire sottogruppi lì. Dipende ancora dal singolo script per indirizzare le richieste al gestore appropriato, come sopra. –