2017-10-13 82 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 –