2010-03-28 3 views
10

app 엔진에 REST 웹 서비스를 만들고 싶습니다. 현재 나는 이것을 가지고있다 :App Engine 및 Webapp를 통한 Rest Web Service

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

그리고 나는 path/rest/users 경로에 접근 할 때 예를 들어 모든 사용자를 조사하고 싶다. 다른 핸들러를 빌드하여이 작업을 수행 할 수 있다고 상상해보십시오.하지만이 핸들러에서 핸들러를 수행 할 수 있는지를 알고 싶습니다.

+0

가능한 [Google App Engine과 Python으로 REST 서비스를 만드는 방법은?] (http://stackoverflow.com/questions/1788041/how-to-create-a-rest-service-with-google -app-engine-and-python) – Oliver

답변

14

물론, 당신은 할 수 있습니다 -

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

에 핸들러의 get 방법을 변경하고 즉

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

에 응용 프로그램, 당신이 원하는 모든 URL 패턴에 핸들러를 매핑 처리기의 get 메서드가 (일반적으로 인수를 통해) 쉽게 구별 할 수 있는지 확인하십시오.

+1

"/ rest/users /"와 "/rest/users/(.+)"에 하나씩 두 개의 핸들러를 사용할 수도 있습니다. –

+0

@ 닉, 확실하지만 OP는 "다른 핸들러를 만들어이 작업을 수행 할 수 있지만이 핸들러 내부에서 수행 할 수 있는지 알고 싶습니다"라고 말하면서 알 수 있습니다. 그래서 반복하지 않았습니다. 그는 방금 말했다 .-). –

+0

죄송합니다, 그 비트를 놓쳤습니다. :) –