Google App Engine中RESTful API的动态URL实现

时间:2011-03-29 11:13:12

标签: api google-app-engine rest

客户端应用程序将使用GET方法向http://server/user/USER_ID/history发送消息,以便接收包含用户使用历史记录的JSON回复。 (可能是听过,购买等歌曲的列表)

我可以通过以下代码段处理http://server/user/USER_ID/

application = webapp.WSGIApplication(
        [('/', BrowserTests),
         ('/user/([^/]+)?', UserHandler),
        ], debug=True)

我通过以下方式在UserHandler中使用:

user_id = str(urllib.unquote(resource))

因此我可以为http://server/user/USER_ID开展工作。但是我怎么能更进一步消耗历史

我尝试查看StackOverflow和文档,但我想我不知道要求接收答案的确切内容。

3 个答案:

答案 0 :(得分:4)

你可以选择这样的东西:

application = webapp.WSGIApplication([
    ('/user/([^/]+)/([^/]+)', UserHandler),
    ], debug=True)


class UserHandler(webapp.RequestHandler):
  def get(self, user_id, action_to_consume):
    self.response.out.write("Action %s" % action_to_consume)#Should print History

答案 1 :(得分:1)

添加第二个参数

application = webapp.WSGIApplication(
        [('/', BrowserTests),
         ('/user/([^/]+)/([^/]+)$', UserHandler),
        ], debug=True)

class UserHandler(webapp.RequestHandler):
    def get(self, userid, history):

答案 2 :(得分:0)

或者@Jose和@ systempuntoout的答案,如果你想为每个动作分别设置一个处理程序:

application = webapp.WSGIApplication([
    ('/', BrowserTests),
    ('/user/([^/]+)', UserHandler),
    ('/user/([^/]+)/history', HistoryHandler),
], debug=True)

class UserHandler(webapp.RequestHandler):
  def get(self, userid):
    pass

class HistoryHandler(webapp.RequestHandler):
  def get(self, userid):
    pass