2009-11-24 38 views
6

Tôi muốn tạo một dịch vụ web RESTFUL nhận yêu cầu qua URL được truy cập và sau đó trả về tài liệu thích hợp cho ứng dụng khách đó. Ví dụ, nếu nó là một ứng dụng thời tiết và tôi muốn có được thời tiết cho Atlanta thông qua một trình duyệt web, tôi sẽ truy cập http://weatherapp.appspot.com/temperature/Atlanta và nó sẽ trả về một tài liệu HTML với thông tin cho Atlanta. Tôi không muốn bất cứ thứ gì liên quan đến cơ sở dữ liệu vì tôi chỉ đang cố gắng bọc một trang web khác bằng cách cạo màn hình. Có ai có bất kỳ ví dụ về làm thế nào để có được đối số từ url?Làm cách nào để tạo một dịch vụ REST bằng Google App Engine và Python?

Trả lời

15

Sử dụng khuôn khổ webapp, bạn có thể chụp các nhóm biểu thức chính quy và vượt qua chúng để xử lý của bạn như thế này:

class WeatherHandler(webapp.RequestHandler): 
    def get(self, location): 
    # Do something for location 

application = webapp.WSGIApplication([ 
    ('/temperature/(.*)', WeatherHandler), 
]) 

def main(): 
    run_wsgi_app(application) 

if __name__ == "__main__": 
    main() 

Bất kỳ nhóm ngoặc trong biểu thức chính quy được thu thập và chuyển như các đối số vị trí để get/bài/etc phương pháp trên xử lý của bạn.

+0

Điều đó hoạt động tốt. Cảm ơn! – James

+1

Bạn không thể sử dụng tệp app.yaml để ánh xạ các URL? –

+1

@Chris app.yaml chỉ thị cơ sở hạ tầng cho kịch bản nào để định tuyến yêu cầu. Kể từ khi yêu cầu được thực hiện bằng cách sử dụng CGI, không có cách nào để nắm bắt các nhóm con ở đó. Nó vẫn còn tùy thuộc vào từng kịch bản lệnh để định tuyến các yêu cầu tới trình xử lý thích hợp, như trên. –

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