2010-03-28 16 views
10

Chcę zbudować usługę sieci Web REST na silniku aplikacji. Obecnie mam to:Rest Web Service z App Engine i Webappem

from google.appengine.ext import webapp 
from google.appengine.ext.webapp import util 

class UsersHandler(webapp.RequestHandler): 

def get(self, name): 
    self.response.out.write('Hello '+ name+'!') 

def main(): 
util.run_wsgi_app(application) 

#Map url like /rest/users/johnsmith 
application = webapp.WSGIApplication([(r'/rest/users/(.*)',UsersHandler)]          
            debug=True) 
if __name__ == '__main__': 
    main() 

I chciałbym retreive na przykład wszystkie moje użytkowników, gdy ścieżka/reszta/użytkowników jest dostępna. Wyobrażam sobie, że mogę to zrobić, budując inny program obsługi, ale chcę wiedzieć, czy można to zrobić wewnątrz tego programu obsługi.

+0

możliwy duplikat [Jak utworzyć usługę REST za pomocą Google App Engine i Pythona?] (Http://stackoverflow.com/questions/1788041/how-to-create-a-rest-service-with-google -app-engine-and-python) – Oliver

Odpowiedz

14

Oczywiście, można - zmienić get metody programu obsługi do

def get(self, name=None): 
    if name is None: 
     """deal with the /rest/users case""" 
    else: 
     # deal with the /rest/users/(.*) case 
     self.response.out.write('Hello '+ name+'!') 

i aplikacja do

application = webapp.WSGIApplication([(r'/rest/users/(.*)', UsersHandler), 
             (r'/rest/users', UsersHandler)]          
            debug=True) 

Innymi słowy, mapować obsługi wszystkich wzorców adresów URL chcesz go uchwyt i upewnij się, że metoda handlerka może łatwo je odróżnić (zwykle za pośrednictwem jej argumentów).

+1

Można również użyć dwóch procedur obsługi - jednego dla "/ rest/users /" i jednego dla "/rest/users/(.+)". –

+0

@Nick, oczywiście, ale OP wie, że, jak mówi: "Mogę to zrobić, budując inny przewodnik, ale chcę wiedzieć, czy można to zrobić wewnątrz tego przewodnika" - więc nie powtórzyłem tego właśnie powiedział ;-). –

+0

Przepraszam, tęskniłem za tym. :) –