Веб-сервис Rest с App Engine и Webapp - PullRequest
10 голосов
/ 29 марта 2010

Я хочу построить веб-сервис REST на движке приложения. В настоящее время у меня есть это:

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

И я хотел бы получить, например, всех своих пользователей при доступе к пути / отдыху / пользователям. Я представляю, что могу сделать это путем создания другого обработчика, но я хочу знать, возможно ли сделать это внутри этого обработчика.

1 Ответ

14 голосов
/ 29 марта 2010

Конечно, вы можете - изменить метод get вашего обработчика на

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+'!') 

и ваша заявка на

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

Другими словами, сопоставьте ваш обработчик со всеми шаблонами URL, которые вы хотите, чтобы он обрабатывал, и убедитесь, что метод обработчика get может легко их различать (обычно через его аргументы).

...