2010-03-28 35 views
10

Tôi muốn xây dựng một dịch vụ web REST trên công cụ ứng dụng. Hiện tại tôi có:Dịch vụ web còn lại với App Engine và Webapp

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

Và tôi muốn truy xuất ví dụ như tất cả người dùng khi đường dẫn/người dùng/người dùng được truy cập. Tôi tưởng tượng tôi có thể làm điều này bằng cách xây dựng một người xử lý khác, nhưng tôi muốn biết nếu có thể làm điều đó bên trong xử lý này.

+0

bản sao có thể có của [Cách tạo dịch vụ REST bằng Google App Engine và Python?] (Http://stackoverflow.com/questions/1788041/how-to-create-a-rest-service-with-google -app-engine-and-python) – Oliver

Trả lời

14

Chắc chắn, bạn có thể - thay đổi phương thức của điều khiển của bạn 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+'!') 

và ứng dụng của bạn để

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

Nói cách khác, bản đồ handler của bạn để tất cả các mẫu URL mà bạn muốn nó xử lý và đảm bảo phương thức get của trình xử lý có thể phân biệt một cách dễ dàng (thường thông qua các đối số của trình xử lý).

+1

Bạn cũng có thể sử dụng hai trình xử lý - một cho "/ rest/users /" và một cho "/rest/users/(.+)". –

+0

@Nick, chắc chắn, nhưng OP biết rằng, như ông nói "Tôi có thể làm điều này bằng cách xây dựng một xử lý khác, nhưng tôi muốn biết nếu có thể làm điều đó bên trong của xử lý này" - vì vậy tôi đã không lặp lại những gì anh ta vừa nói ;-). –

+0

Xin lỗi, tôi đã bỏ lỡ một chút. :) –

Các vấn đề liên quan