2010-03-28 15 views
10

Uygulama motorunda bir REST web hizmeti oluşturmak istiyorum.Web Servisini App Engine ve Webapp ile Dinleme

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

Ve yolu/dinlenme/kullanıcıların erişildiğinde ı örneğin tüm kullanıcıları retreive istiyorum: Şu anda ben bu var. Bunu başka bir işleyici oluşturarak yapabilirim, ama bu işleyicinin içinde yapmanın mümkün olup olmadığını bilmek istiyorum.

+0

[Google App Engine ve Python ile nasıl bir REST hizmeti oluşturmak için nasıl yapılır?] Olası kopyası (http://stackoverflow.com/questions/1788041/how-to-create-a-rest-service-with-google -app-engine-and-python) – Oliver

cevap

14

Tabii, olabilir -

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çin işleyicisi'nın get yöntemini değiştirmek ve başka deyişle

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

için uygulama, siz istediğiniz tüm URL modelleri için işleyici map İşleyin ve işleyicinin get yönteminin aralarında kolayca ayırt edebildiğinden emin olun (genellikle argümanlarıyla).

+1

İki işleyiciyi de kullanabilirsiniz - biri "/ rest/users /" için ve diğeri "/rest/users/(.+" için. –

+0

@Nick, elbette, ama OP bilir ki, "Bunu başka bir işleyiciyi inşa ederek yapabilirim, ama bu işleyicinin içinde yapmanın mümkün olup olmadığını bilmek istiyorum" - bu yüzden neyi tekrarlamadım sadece dedi ;-). –

+0

Üzgünüm, bu özlemi özledim. :) –