2017-10-13 79 views
0

我正在嘗試編寫一個具有「船」資源的API,並且我想用該ID和另一個資源構建該URL。GAE Python WebApp2 url/resource /:id/resource

localhost:8080/boat/absk12712480/arrival 

我本來有:

app = webapp2.WSGIApplication([ 
    ... 
    ('/boat/(.*)/arrival', ArrivalHandler), 
    ... 
    ], debug=True) 

但是,一直抓住 「/到達」 作爲ID的一部分。所以我試過了:

('/boat/(.*?(?=\/)/arrival', ArrivalHandler) 
('/boat/(.*?(?=\/arrival)/arrival', ArrivalHandler) 

是我想做的事情,如果是的話,怎麼樣?

回答

1

('/boat/(.*)/arrival', ArrivalHandler)正則表達式太貪婪,並且與webapp2 URI format不匹配。如果ID永遠只是小寫ASCII和數字,你可以使用:

('/boat/<:[a-z0-9]+>/arrival', ArrivalHandler)

應該工作,或

('/boat/<id:[a-z0-9]+>/arrival', ArrivalHandler)

如果你想有一個命名參數。

+0

謝謝你的幫助。隨着你的正則表達式的幫助,我找到了解決方案。 **('/ boat /([A-z0-9 \ - ] +)/ arrival'**我需要()因爲我正在使用Lazy Handler –